【问题标题】:Assigning value to Object.values(object)[i] not working为 Object.values(object)[i] 赋值不起作用
【发布时间】:2021-04-19 14:27:49
【问题描述】:

我正在保存一个对象,但后来当我添加新值时它返回未定义。我试图将任何未定义的值设置为初始值,但未成功。我试过把它赋值给一个固定的值,但它也不起作用,我也不知道问题的原因。

let initalObject = {
   keyOne: true,
   keyTwo: "string",
   keyThree: 0,
}

let object = {
   keyOne: true,
   keyTwo: "string",
}

for (i = 0; i != Object.keys(initalObject).length; i++) {
   if (Object.values(object)[i] == undefined) {
      Object.values(object)[i] = Object.values(initalObject)[i];
   }
}

谢谢!

【问题讨论】:

    标签: javascript loops object


    【解决方案1】:

    您的代码不起作用的原因是Object.values(object) 本身不是object,而是一个值数组。您需要直接使用其键访问object 的值。

    let initalObject = {
       keyOne: true,
       keyTwo: "string",
       keyThree: 0,
    }
    
    let object = {
       keyOne: true,
       keyTwo: "string",
    }
    
    const keys = Object.keys(initalObject);
    for (key of keys) {
       if (object[key] === undefined) {
          object[key] = initalObject[key];
       }
    }
    
    console.log(object);

    【讨论】:

    • 谢谢!这帮助很大!
    【解决方案2】:

    您可以使用for in 循环实现相同的目的。

    let initialObject = {
       keyOne: true,
       keyTwo: "string",
       keyThree: 0,
    }
    
    let object = {
       keyOne: true,
       keyTwo: "string",
    }
    
    for (let key in initialObject) {
      if (!object[key]) {
        object[key] = initialObject[key]
      }
    }
    
    console.log(object)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多