迭代JS对象并根据条件重写值

时间:2017-04-03 18:17:04

标签: javascript object

我正在尝试将对象中的空值重写为零。

var data = {
    a : 1,
    b: 22,
    c: null,
    d: 1
};

for(var i=0; i < data.length; i++) {
    if (data[i].value === null){
        data[i].value = 0;
    }

}

我在这里缺少什么?

2 个答案:

答案 0 :(得分:4)

您正在使用错误的循环并将对象视为数组。使用for-in loop

  

for...in语句以任意顺序迭代对象的可枚举属性。对于每个不同的属性,可以执行语句。

&#13;
&#13;
var data = {
  a: 1,
  b: 22,
  c: null,
  d: 1
};

for (var i in data) {
  if (data[i] === null) {
    data[i] = 0;
  }
}
console.log(data)
&#13;
&#13;
&#13;

答案 1 :(得分:0)

由于data变量是一个对象,length属性将不起作用。您可以将Array#reduceObject.keys一起使用以获得所需的结果。

var data = { a: 1, b: 22, c: null, d: 1 };

data = Object.keys(data).reduce(function(s,a) {
  data[a] == null ? s[a] = 0 : s[a] = data[a];
  return s;
}, {});

console.log(data);