gpt4 book ai didi

javascript - 如何在 Javascript 中将属性从一个对象添加到另一个对象而不覆盖

转载 作者:行者123 更新时间:2023-12-01 02:51:02 25 4
gpt4 key购买 nike

我正在尝试将一个对象的属性添加到另一个对象中,而不覆盖原始属性。

//Start
obj1 = {a: 1, b: 2, c: 3}
obj2 = {b: 4, c: 3, d: 4}

//Goal
obj1 = {a: 1, b: 2, c: 3, d: 4}

我已经尝试了以下方法,但我无法弄清楚:

function mergeProp(obj1, obj2) { //obj1 is destination, obj2 is source
for (var a in obj2) {
if (obj2.hasOwnProperty(a) && !obj1.hasOwnProperty(a)) {
obj1[a] = obj2[a];
}
}
return obj1 //returns {a: 1, b: 4, c: 3, d: 4} should have {...b: 2...}
}

这将返回被覆盖的属性。我尝试了此方法的变体,但似乎总是被覆盖或丢失 obj1

的属性

我也尝试过这段代码:

function extend(obj1, obj2) {
let obj = {};
for (let a in obj2) {
obj[a] = obj2[a];
};
for (let b in obj1){
obj[b] = obj1[b];
};
return obj; //Returns {b: 4, c: 3, d: 4}
}

该对象甚至不具有 obj1 的任何属性。

我知道“...对象”,但我正在练习的类(class)不希望我使用它。不过,我设法让它工作。

提前致谢!

最佳答案

ES2015:

const obj3 = Object.assign({}, obj2, obj1);

ES2018:

const obj3 = {...obj2, ...obj1};

关于javascript - 如何在 Javascript 中将属性从一个对象添加到另一个对象而不覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46967357/

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