gpt4 book ai didi

javascript - 使用 ES6 基于属性将 javascript 对象数组转换为数组的键值对

转载 作者:行者123 更新时间:2023-11-30 08:21:24 24 4
gpt4 key购买 nike

假设我有以下对象数组:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com