gpt4 book ai didi

javascript - 如何在 ES6/Javascript 中深度复制对象而不替换整个属性

转载 作者:行者123 更新时间:2023-11-28 14:29:36 25 4
gpt4 key购买 nike

我想将所有缺失的字段深度复制到下面示例代码所示的对象中。是否有快速的 es6 快捷方式可以深度复制对象中缺少的属性?

我尝试使用Object.assign但问题是它取代了 someKey与第二个someKey对象,因为我希望它简单地复制所有属性。

此外,这些对象只是一些随机演示,假设魔术代码应该与属性无关

const x = {};

const a = { someKey: { first: 1 } };
const b = { someKey: { second: 2 } };
const c = { otherKey: { first: 1 } };

// some magic algorithm to get expected
Object.assign(x, a, b, c); // this doesn't work

const expected = {
someKey: {
first: 1,
second: 2
},
otherKey: {
first: 1
}
};

最佳答案

Voit lá。运行代码片段进行演示。

const merge = function(){
let target = arguments[0];
Array.prototype.shift.apply(arguments);
while (arguments[0]) {
for (let key of Object.keys(arguments[0]))
if (arguments[0][key] instanceof Object)
Object.assign(arguments[0][key], merge(target[key], arguments[0][key]));
Object.assign(target || {}, arguments[0]);
Array.prototype.shift.apply(arguments);
}
return target;
}

const x = {};

const a = { someKey: { first: 1 } };
const b = { someKey: { second: 2 } };
const c = { otherKey: { first: 1 } };

console.log(merge(x,a,b,c));

关于javascript - 如何在 ES6/Javascript 中深度复制对象而不替换整个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51995218/

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