我有一个objetcs数组,每个对象包含数组。我需要操作它,以便内部数组中的元素如果不同则被追加,或者如果相同则保持为单个;基本上按type
分组。这有点难以解释,所以我举个例子。
这是我的数组:
let array1 = [{
1: [{
id: "aaaa",
name: 'name1',
type: 1
}],
2: [{
id: 'bbbb',
name: 'name2',
type: 2
}],
3: [{
id: "ccc",
name: 'name3',
type: 3
}]
},
{1: [{
id: "aaaa",
name: 'name1',
type: 1
}],
2: [{
id: 'bbbb',
name: 'name2',
type: 2
}],
3: [{
id: "dddd",
name: 'name4',
type: 3
}],
};
我希望得到类似以下内容的内容:
let result = {
1: [
{
id: "aaaa",
name: 'name1',
type: 1
}],
2: [{
id: 'bbbb',
name: 'name2',
type: 2
}],
3: [{
id: "cccc",
name: 'name3',
type: 3
},
{
id: "dddd",
name: 'name4',
type: 3
}
]
}
最有效的方法是什么(可能使用lodash)? 我已尝试过foreach并分配了一些内容,但我总是最终重写内部数组... 谢谢你的帮助!
答案 0 :(得分:1)
您可以使用_.mergeWith传递比较功能:
var result = array1.shift();
_.mergeWith(result, ...array1, function(a, b) {
return _.isEqual(a, b) ? a : _.concat(a, b);
});
console.log(result);