gpt4 book ai didi

javascript - 按 Javascript 键合并两个对象(不覆盖不同的值)

转载 作者:行者123 更新时间:2023-12-03 03:06:55 25 4
gpt4 key购买 nike

我有一个对象数组,每个对象都包含数组。我需要对其进行操作,以便内部数组中的元素如果不同则附加,或者如果相同则保持为单个;基本上按类型分组。解释起来有点困难,所以我举个例子。这是我的数组:

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 和分配,但我总是最终覆盖内部数组......谢谢您的帮助!

最佳答案

您可以使用_.mergeWith传递比较函数:

var result = array1.shift();
_.mergeWith(result, ...array1, function(a, b) {
return _.isEqual(a, b) ? a : _.concat(a, b);
});
console.log(result);

demo fiddle

关于javascript - 按 Javascript 键合并两个对象(不覆盖不同的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47126168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com