Как обойти массив объектов и объеденить совпадающие ключи
Как привести такой массив:
const arr = [
{
type: "t",
position: {
lg: { x: 0 },
md: { x: 1 },
},
},
{
type: "w",
position: {
md: { x: 2 },
},
},
{
type: "t",
position: {
lg: { x: 3 },
},
},
];
К объекту вида:
{
lg: [
{ x: 0 },
{ x: 3 }
],
md: [
{ x: 1 },
{ x: 2 }
]
}
Подойдtn любой вариант: lodash, рекурсия
Ответы (1 шт):
Автор решения: ksa
→ Ссылка
lodash, рекурсия
Это все не обязательно. Достаточно пары циклов...
const arr = [{
type: "t",
position: {
lg: {
x: 0
},
md: {
x: 1
},
},
},
{
type: "w",
position: {
md: {
x: 2
},
},
},
{
type: "t",
position: {
lg: {
x: 3
},
},
},
];
const obj = arr.reduce((o, v) => {
['lg', 'md'].forEach(k => v.position[k] && o[k].push(v.position[k]))
return o
}, {
lg: [],
md: []
})
console.log(obj)