假设我有一个json对象数组:
[
{
name: "abc",
class: "12"
},
{
name: "abc",
Roll: "12"
},
{
name: "def",
class: "10"
},
{
name: "def",
Roll: "15"
}
]
那么,我需要一个输出,像这样:
[
{
name: "abc",
class: "12",
Roll: "12"
},
{
name: "def",
class: "10",
Roll: "15"
}
]
一个解决方案是通过name
将对象分组在一起。在我们有了分组之后,我们可以合并每组中的对象。
function groupBy(array, key) {
return array.reduce((prev, current) => {
(prev[current[key]] = prev[current[key]] || []).push(current);
return prev;
}, {});
}
function main(array) {
// Group by objects by name
const groups = groupBy(array, 'name');
// Iterate through groups and merge the list of objects together
const result = Object.values(groups).map(group => group.reduce((prev, current) => {
return {...prev, ...current};
}));
return result;
}
const objects = [
{
name: "abc",
class: "12"
},
{
name: "abc",
Roll: "12"
},
{
name: "def",
class: "10"
}, {
name: "def",
Roll: "15"
}];
console.log(main(objects));