#javascript #typescript #ecmascript-6
#javascript #typescript #ecmascript-6
Вопрос:
Мои данные:
[
{
"id": "ewq123",
"name": "Joshua",
"order": "Pizza"
},
{
"id": "ewq123",
"name": "Joshua",
"order": "Burger"
},
{
"id": "a512dsa",
"name": "Eugene",
"order": "Pizza"
},
]
Я хочу, чтобы в итоге получилось что-то вроде:
[
{
"id": "ewq123",
"name": "Joshua",
"order": ["Burger", "Pizza"]
},
{
"id": "a512dsa",
"name": "Eugene",
"order": "Pizza"
},
]
Есть ли лучший способ использовать функции ES6? как оператор распространения
Комментарии:
1. «Есть ли лучший способ использовать функции ES6″, лучше, чем что именно? У вас есть какой-то код, который вы пытаетесь улучшить?
Ответ №1:
Попробуйте приведенный ниже код, чтобы получить тот же результат :
var originalArray = [{
"id": "ewq123",
"name": "Joshua",
"order": "Pizza"
},
{
"id": "ewq123",
"name": "Joshua",
"order": "Burger"
},
{
"id": "a512dsa",
"name": "Eugene",
"order": "Pizza"
},
];
var arrayHashmap3 = originalArray.reduce((obj, item) => {
if (obj[item.id]) {
obj[item.id].order.push(item.order)
} else {
item.order = [item.order]
obj[item.id] = {
...item
}
}
return obj;
}, {});
var mergedArray3 = Object.values(arrayHashmap3);
console.log(mergedArray3);
Вывод :
[
{
"id": "ewq123",
"name": "Joshua",
"order": ["Burger", "Pizza"]
},
{
"id": "a512dsa",
"name": "Eugene",
"order": "Pizza"
},
]