如何在Javascript中合并嵌套对象?

如何在Javascript中合并嵌套对象?,javascript,Javascript,设x={“1”:{“id”:1},“2”:{“id”:1,“key”:“value”} 设y={“2”:{“id”:2} 设z={ …x, Y } 控制台日志(z); 键仅适用于第一级,您必须向下一级 设x={“1”:{“id”:1},“2”:{“id”:1,“key”:“value”} 设y={“2”:{“id”:2} 设z={…x,…y}//outer 对于(设k在z中)z[k]={…x[k],…y[k]}// console.log(z) .as控制台包装{top:0;最大高度:100%

设x={“1”:{“id”:1},“2”:{“id”:1,“key”:“value”}
设y={“2”:{“id”:2}
设z={
…x,
Y
}
控制台日志(z);

键仅适用于第一级,您必须向下一级

设x={“1”:{“id”:1},“2”:{“id”:1,“key”:“value”}
设y={“2”:{“id”:2}
设z={…x,…y}//outer
对于(设k在z中)z[k]={…x[k],…y[k]}//
console.log(z)
.as控制台包装{top:0;最大高度:100%!重要;}
我会使用lodash:

_.merge(object, [sources])
此方法类似于u.assign,只是它递归地将源对象自己的和继承的可枚举字符串键控属性合并到目标对象中。如果存在目标值,则跳过解析为未定义的源属性。数组和普通对象属性以递归方式合并。其他对象和值类型由赋值覆盖。从左到右应用源对象。后续源覆盖以前源的属性指定

以下是我的解决方案:

让x={“1”:{id:1},“2”:{id:1,key:“value”};
设y={“2”:{id:2};
设z={};
for(让Object.entries(x))的[key,value]{
如果(y.hasOwnProperty(键)){
z[键]={
价值
id:y[key].id
};
}否则{
z[键]=值;
}
}

控制台日志(z)