Сортировка и фильтр объектов
Всем привет.
var arr = [{
item_id: "2",
add_id: "1",
time_start: "13:00"
}, {
item_id: "2",
add_id: "4",
time_start: "13:00"
}, {
item_id: "2",
add_id: "11",
time_start: "15:00"
}, {
item_id: "3",
add_id: "11",
time_start: "15:00"
}]
Как мне отсортировать по двум параметрам. По одному, решение нашёл, когда в объекте не было времени.
const result = Array.from(new Set(pushId.map(s => s.item_id))).map(lab => {
return {
item_id: lab,
add_id: pushId.filter(s => s.item_id === lab).map(edition => edition.add_id)
}
})
console.log(result)
[{
item_id: "2",
add_id: ["1", "4", "11"]
}, {
item_id: "3",
add_id: "11"
}]
Но теперь появилось время и мне нужно не только по item_id, но и по времени,time_start. Что бы на выходе было
[{
item_id: "2",
add_id: ["1", "4"],
time_start: "13:00"
}, {
item_id: "2",
add_id: ["11"],
time_start: "15:00"
}, {
item_id: "3",
add_id: "11",
time_start: "15:00"
}]
Самому не осилить) |
var arr = [{ item_id: "2", add_id: "1", time_start: "13:00" },{ item_id: "2", add_id: "4", time_start: "13:00" },{ item_id: "2", add_id: "11", time_start: "15:00" },{ item_id: "3", add_id: "11", time_start: "15:00" }]
const obj = arr.reduce ((map, {item_id, add_id, time_start}) => {
const map_id = map[item_id] ?? (map[item_id] = {}, map[item_id]);
const map_start = map_id[time_start]?? (map_id[time_start] = [], map_id[time_start]);
map_start.push(add_id);
return map;
}, {});
const result = [];
for (const item_id in obj) {
for (const time_start in obj[item_id]) {
result.push({item_id, add_id:obj[item_id][time_start], time_start});
}
}
console.log(result);
|
Спасибушки).
|
| Часовой пояс GMT +3, время: 04:36. |