#javascript #jquery #mysql #arrays #node.js
#javascript #jquery #mysql #массивы #node.js
Вопрос:
В моем NodeJs
проекте я хочу создать новую array
форму MySQL
результата запроса.
Это мой результат:
[
{
"availabilityId": 1,
"dayName": 1,
"fromTime": "05:30:00",
"toTime": "10:00:00"
},
{
"availabilityId": 2,
"dayName": 1,
"fromTime": "10:30:00",
"toTime": "06:00:00"
},
{
"availabilityId": 3,
"dayName": 2,
"fromTime": "16:30:00",
"toTime": "22:00:00"
}
]
В этом результате два данных dayName
совпадают.
Это мой ожидаемый результат
[
{
"dayName": 1,
"time":[
{
"availabilityId": 1,
"fromTime": "05:30:00",
"toTime": "10:00:00"
},
{
"availabilityId": 2,
"fromTime": "10:30:00",
"toTime": "06:00:00"
}
]
},
{
"dayName": 2,
"time":[
{
"availabilityId": 3,
"fromTime": "16:30:00",
"toTime": "22:00:00"
}
]
}
]
Мой код:
CubbersAvailability.findAll(
{
where:{
cubbersId:1,
userId:2
},
attributes:['availabilityId', 'dayName', 'fromTime', 'toTime']
}
).then(availabilityList =>{
res.send(availabilityList);
// code for create new array
}).catch(error=>{
res.status(403).send({status: 'error', resCode:200, msg:'Internal Server Error...!', data:error});
});
Ответ №1:
Достаточно простой, но очень специфичный.
const source = [
{
"availabilityId": 1,
"dayName": 1,
"fromTime": "05:30:00",
"toTime": "10:00:00"
},
{
"availabilityId": 2,
"dayName": 1,
"fromTime": "10:30:00",
"toTime": "06:00:00"
},
{
"availabilityId": 3,
"dayName": 2,
"fromTime": "16:30:00",
"toTime": "22:00:00"
}
];
function createNewArray(source) {
let output = [];
source.forEach(entry => {
let dayName = entry.dayName;
let time = {
"availabilityId": entry.availabilityId,
"fromTime": entry.fromTime,
"toTime": entry.toTime
};
if (output[dayName] === undefined) {
output[dayName] = {
"dayName": entry.dayName,
"time": []
};
}
output[dayName].time.push(time);
});
output.shift(); //shouldn't be needed, but since [0] is empty, necessary.
return output;
}
console.log(createNewArray(source));
Комментарии:
1. Спасибо за ваш код, он работает, но результат пришел по ссылке ibb.co/bHTkw6w
2. Но посмотрите мой ожидаемый результат, если то же самое
dayName
означает, что данные в том же массиве3. ты там, братан
4. Исправлена структура, но по какой-то причине она добавляет
undefined
в начале, угадывая причину, по которой в массиве нет0
, просто проверьте, есть ли записьundefined
, и пропустите ее, если она есть.5. Теперь он работает, братан, но в верхней части результата получаем
undefined