繁体   English   中英

Javascript:使用相同的键合并数组中的对象不起作用

[英]Javascript : Merge objects in array with the same key not working

我正在尝试将相同的组名合并在一起。 我环顾四周以了解如何执行此操作,因此我进行了一些研究并编写了以下代码。

这是我不起作用的实现:

 const input = [ { people: [{ names: "John" }, { names: "Sam" }], group: "one", }, { people: [{ names: "George" }], group: "one", }, { people: [{ names: "Bella" }], group: "two",}, ]; var output = []; input.forEach(function(item) { var existing = output.filter(function(v, i) { return v.group == item.group; }); if (existing.length) { var existingIndex = output.indexOf(existing[0]); output[existingIndex].people = output[existingIndex].people.concat(item.people); } }); console.log(output)

期望输出:

const output = [
  {
    people: [{ names: "John" }, { names: "Sam" }, { names: "George" }],
    group: "one",
  },
  {
    people: [{ names: "Bella" }],
    group: "two",
  },
];
  • 使用Array.reduce ,您可以使用group键按当前数组进行group
  • 从那个分组的对象中,你可以得到你想要的结果。

 const input = [ { people: [{ names: "John" }, { names: "Sam" }], group: "one", }, { people: [{ names: "George" }], group: "one", }, { people: [{ names: "Bella" }], group: "two", }, ]; const groupByKey = input.reduce((acc, cur) => { acc[cur.group] ? acc[cur.group].people.push(...cur.people) : acc[cur.group] = cur; return acc; }, {}); const output = Object.values(groupByKey); console.log(output);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM