【问题标题】:How to update dynamically an object in Javascript?如何在Javascript中动态更新对象?
【发布时间】:2020-05-29 14:57:18
【问题描述】:

我有一个对象,我想用新数据更新它。但是,如果其中一个键的值为 undefined,我希望它具有与之前定义的相同的值。

let obj 

obj = {
  name: 'Bill'
  job: 'dev'
  age: 22
}

const newObj = {
  name: 'Sam',
  age: 33
}

Object.keys(obj).forEach(key => {
  obj[key] = newObj[key];
});

我要obj返回:

{
  name: "Sam"
  job:'dev',
  age: 33,

}

但它会返回:

{
  age: 33,
  job: undefined,
  name: "Sam"
}

此外,以与原始顺序相同的顺序返回会有所帮助。

【问题讨论】:

  • 更新前检查if(key in newObj)
  • 472 自 ES2015 以来,对象的迭代顺序遵循一定的规则集,但并不(总是)遵循插入顺序。简单来说,迭代顺序是字符串键的插入顺序和类数字键的升序的组合。
  • @adiga - 它可能仍然存在并具有值undefined...

标签: javascript object javascript-objects


【解决方案1】:

您可以使用spread syntax 简单地合并对象,例如:

let obj 

obj = {
  name: 'Bill',
  job: 'dev',
  age: 22,
}

const newObj = {
  name: 'Sam',
  age: 33,
}

obj= {...obj, ...newObj}
console.log( obj )

【讨论】:

    【解决方案2】:

    你可以这样做:

    Object.keys(obj).forEach(key => {
     obj[key] = newObj[key] ? newObj[key] : obj[key];
    });
    

    【讨论】:

      【解决方案3】:
      let obj 
      
      obj = {
        name: 'Bill',
        job: 'dev',
        age: 22
      }
      
      const newObj = {
        name: 'Sam',
        age: 33
      }
      
      obj= {
        ...obj,
        ...newObj
      }
      

      Spread 将解决您的问题。 newObject 属性将覆盖对象属性。 (覆盖的相同属性)

      【讨论】:

        猜你喜欢
        • 2021-11-15
        • 1970-01-01
        • 1970-01-01
        • 2021-06-12
        • 1970-01-01
        • 1970-01-01
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多