我正在尝试将对象中的空值重写为零。
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;
}
}
我在这里缺少什么?
答案 0 :(得分:4)
您正在使用错误的循环并将对象视为数组。使用for-in
loop
for...in
语句以任意顺序迭代对象的可枚举属性。对于每个不同的属性,可以执行语句。
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;
答案 1 :(得分:0)
由于data
变量是一个对象,length
属性将不起作用。您可以将Array#reduce
与Object.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);