首页 > 解决方案 > 用 0 内部对象替换 undefined 的最佳方法是什么?

问题描述

这是示例对象:

对象内部的值实际上没有被调用value1value2等等

他们都有不同的名字

data是从api获取的数据。

let object = {
  id: '1',
  gen: {
    value1: data.value1, 
    value2: data.value2,
    value3: data.value3,
    value4: data.value4, // etc 
  },
  somethingelse: {
    one: {
      value1: data.value1,
      value2: data.value2,
      value3: data.value3,
      value4: data.value4, // etc 
    },
    two: {
      value1: data.value1,
      value2: data.value2,
      value3: data.value3,
      value4: data.value4, // etc 
    },
    three: {
      value1: data.value1,
      value2: data.value2,
      value3: data.value3,
      value4: data.value4, // etc 
    }
  }
};

我知道我可以添加|| 0到每一个,但它会是很多丑陋的代码,而且有时会有数学运算会返回NaN ,我不能这样做: if (!object.value1) object.value1 = 0因为我需要 100 行重复的代码

标签: javascriptobject

解决方案


您可以将相同的逻辑应用于具有更多循环的更深层次的对象:

for(let key in myObject) {
   if(myObject[key] === undefined || myObject[key] === null)
       myObject[key] = 0;
}

如果您迭代的对象中有更多对象,那么键的键等等。


推荐阅读