Javascript 组合两个对象,但如果第一个对象已具有属性,则忽略第二个对象中的属性
给定两个对象,“扩展”将属性从第二个对象添加到第一个对象 注:Javascript 组合两个对象,但如果第一个对象已具有属性,则忽略第二个对象中的属性,javascript,object,Javascript,Object,给定两个对象,“扩展”将属性从第二个对象添加到第一个对象 注: 添加不在第一个对象中的任何关键点 如果第一个对象已具有给定的键,请忽略它(不要覆盖属性值) 根本不要修改第二个对象 var obj1 = { a: 1, b: 2 }; var obj2 = { b: 4, c: 3 }; extend(obj1, obj2); console.log(obj1); // --> {a: 1, b: 2, c: 3} 我能做到这一点: function extend
- 添加不在第一个对象中的任何关键点
- 如果第一个对象已具有给定的键,请忽略它(不要覆盖属性值)
- 根本不要修改第二个对象
var obj1 = { a: 1, b: 2 }; var obj2 = { b: 4, c: 3 }; extend(obj1, obj2); console.log(obj1); // --> {a: 1, b: 2, c: 3}
function extend(obj1, obj2) {
for (var key in obj2) {
obj1[key] = obj2[key];
}
return obj1;
}
其中记录了:
{a: 1, b: 4, c: 3}
在过去的两天左右的时间里,我一直在绞尽脑汁想弄明白这一点。尝试过谷歌搜索和其他一切。提前感谢:)基本上,您只需遍历第二个对象上的每个键,然后查看第一个对象是否具有该键 正如您所知,迭代可以使用一个。您缺少的部分是如何检查对象是否已经具有给定的属性。这就是为什么
功能扩展(obj1、obj2){
//迭代obj2中的每个(可枚举)键
用于(obj2中的var键){
//如果obj1没有此名称的密钥,
//将其添加到obj1
如果(!obj1.hasOwnProperty(键)){
obj1[键]=obj2[键];
}
}
}
变量obj1={
答:1,,
b:2
};
变量obj2={
b:4,
c:3
};
延伸(obj1、obj2);
console.log(obj1);//-->{a:1,b:2,c:3}
你到底试过什么?你在哪里被卡住了?我编辑了这个问题以显示我已经走了多远。如果第一个对象已经有一个名为b的键,我不知道如何省略第二个对象中的b:4。是的,这很有效!我记得我以前也试过这个,但是我输入了if(!obj1.hasOwnProperty[key])<---括号真的把我搞砸了,哈哈