我在打字稿中有以下结构的数组
[{Zone: "4", Org: 1},
{Zone: "2", Org: 1},
{Zone: "4", Mem: 32},
{Zone: "2", Mem: 22}]
我想将其更改为以下内容,
[{Zone: "4", Org: 1, Mem: 32},
{Zone: "2", Org: 1, Mem: 22}],
我尝试先创建一组新的区域,因为将来会有更多的值,然后在该区域上运行一次foreach,然后执行reduce函数。但是我不确定我的方法是否正确。我对如何推进这种情况感到迷茫。
如何以最少的代码实现这一目标?
最佳答案
假设您要按区域分组,则可以在reduce
旁边使用Object.values
:
const arr = [
{Zone: "4", Org: 1},
{Zone: "2", Org: 1},
{Zone: "4", Mem: 32},
{Zone: "2", Mem: 22}
]
const out = arr.reduce((a, o) => (a[o.Zone] = {...a[o.Zone], ...o}, a), {})
console.log(Object.values(out))
注意,此解决方案将添加所有其他属性,并且如果以前存在它们,则将覆盖它们。注意,这将取决于数组中的顺序。
关于javascript - 如何更改数组以合并属于同一属性的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59247545/