假设我有以下对象数组:
myArray = [
{name: 'First', parent: 1, delta: 2},
{name: 'Second', parent: 1, delta: 1},
{name: 'Third', parent: 2, delta: 1}
];
我想将此数组转换为一个对象,其中包含父对象的键和对象的值。例如:
result = {
1: [
{name: 'First', parent: 1, delta: 2},
{name: 'Second', parent: 1, delta: 1}
],
2: [
{name: 'Third', parent: 2, delta: 1}
]
}
我可以使用 forEach
或嵌套循环来完成此操作,但我想知道是否有一种方法可以使用 ES6 语法来更简洁/内联地完成此操作,这将允许我做一些事情比如在 delta
上排序,等等。
最佳答案
您可以为此使用 Array.reduce()
:
let myArray = [{
name: 'First',
parent: 1,
delta: 2
},
{
name: 'Second',
parent: 1,
delta: 1
},
{
name: 'Third',
parent: 2,
delta: 1
}
];
var res = myArray.reduce((acc, item) => {
if (acc[item.parent]) {
acc[item.parent].push(item);
} else {
acc[item.parent] = [item];
}
return acc;
}, {});
console.log(res);
关于javascript - 使用 ES6 基于属性将 javascript 对象数组转换为数组的键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53007085/