我在打字稿中有以下结构的数组

[{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/

10-12 12:42
查看更多