合并两个对象,但是如果第一个对象已经具有属性,则忽略第二个对象中的属性

jPhizzle

给定两个对象,“ 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}

在过去的两天左右的时间里,我一直在努力寻找解决办法。尝试谷歌搜索和一切。提前致谢 :)

迈克·克拉克

基本上,您只需要遍历第二个对象上的每个键,并查看第一个对象是否具有该键。

如您所知,可以使用for..in循环来完成迭代您缺少的部分是如何检查对象是否已经具有给定的属性。hasOwnProperty是为了什么

function extend(obj1, obj2) {
  // Iterate over every (enumerable) key in obj2
  for (var key in obj2) {
    // If obj1 does not have a key by this name,
    // add it to obj1
    if (!obj1.hasOwnProperty(key)) {
      obj1[key] = obj2[key];
    }
  }
}

var obj1 = {
  a: 1,
  b: 2
};
var obj2 = {
  b: 4,
  c: 3
};

extend(obj1, obj2);
console.log(obj1); // --> {a: 1, b: 2, c: 3}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

两个具有相同值的下拉菜单。如果用户在第一个下拉菜单中选择一个值,则必须在第二个下拉菜单中禁用该值

我想用Angular2中的第一个调用第二个可观察对象

ComboBox的第二个Binding属性指向其第一个属性绑定对象

rxjs:合并两个流,但是在第二个发送事件后取消第一个

通过比较属性将第二个数组与第一个数组合并,如果对象不属于第二个数组,则将属性添加到第一个数组中的对象

我有两个json文档,我需要使用python比较第一个对象的键是否存在于第二个对象中。他们两个都嵌套

有没有办法使用传播运算符合并两个对象,使结果具有一个对象的键,但具有第二个对象的键?

如果第二个数组的项目包含数组第一个对象的id,则在Angular 8中合并两个对象数组

根据对象从第一个参数推断第二个参数

如何从第二个对象更改第一个对象的值?

仅当第一个对象实现第二个对象所需的接口时,才在C#中如何在运行时编写两个对象?

在具有对象(第二个参数)的数组(第一个参数)上使用for循环迭代

Javascript:如果对象具有匹配的键,如何用第二个对象中的值替换第一个对象的值

Haskell,找到第二个元素最少的tupel,如果第二个元素具有两个相同值的tuple,则使用第一个元素进行排序

Django:通过比较第二个OneToOne相关模型的属性来获取第一个模型的对象

将对象分配给对象的属性时,该属性是否会成为对象?如果是这样,我如何通过第二个对象访问第一个对象?

比较两个对象数组,并删除第二个对象数组中具有相同属性值的项

返回一个删除了第二个对象的所有属性的js对象

如何获得第一个和第二个对象

如何获得第一个变量的排名是第一个对象中的对象,并且在android中第二个对象中有数组

通过第一个对象在 C++ 中创建第二个对象时,第一个对象去哪里了?

两个 JS 对象,从第一个对象中获取它在第二个对象中缺少的值

合并两个画布。把第一个放在第二个

如何使用最新的 Javascript 合并两个对象,使一个对象的键映射到另一个对象的值,而第二个对象没有额外的键?

为什么在python中,构造后的第二个对象具有第一个对象的数据?

如何从第二个对象中的每个对象复制技能属性,并根据属性 id 为第一个数组中的每个对象设置该技能属性?(JS)

JavaScript 比较两个数组并将第二个数组中具有相同属性值的项推送到第一个数组

数组中第一个对象的属性被推送但不是第二个对象

JavaScript:如何合并两个对象但仅保留第二个对象的属性(如果存在)?