无论Object.assign和对象传播只能做一浅合并.
问题的一个例子:
// No object nesting
const x = { a: 1 }
const y = { b: 1 }
const z = { ...x, ...y } // { a: 1, b: 1 }
Run Code Online (Sandbox Code Playgroud)
输出是你所期望的.但是如果我试试这个:
// Object nesting
const x = { a: { a: 1 } }
const y = { a: { b: 1 } }
const z = { ...x, ...y } // { a: { b: 1 } }
Run Code Online (Sandbox Code Playgroud)
代替
{ a: …Run Code Online (Sandbox Code Playgroud) 我想合并具有相同键的 2 个对象,来自 2 个数组的值,如下所示:
var arr1 = [
{ a: "a", 1: 1, 2: 2 },
{ a: "b", 1: 1, 2: 3 }
];
var arr2 = [
{ a: "a", 3: 123 },
{ a: "b", 3: 4411 }
];
var arr3 = _.map(arr1, function(a1) {
var a3 = {};
_.map(arr2, function(a2) {
if (a1.a == a2.a) {
a3 = _.extend(a1, a2);
}
})
return a3
});
Run Code Online (Sandbox Code Playgroud)
结果:
arr3 = [
{ '1': 1, '2': 2, '3': …Run Code Online (Sandbox Code Playgroud)