[英]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.