Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 组合两个对象,但如果第一个对象已具有属性,则忽略第二个对象中的属性_Javascript_Object - Fatal编程技术网

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])<---括号真的把我搞砸了,哈哈