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

Javascript 迭代JS对象并根据条件重写值,javascript,object,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; } } var数据={ 答:1,, b:22, c:空, d:1 }; 对于(变量i=0;i

我试图将对象中的空值重写为零

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;
    }

}
var数据={
答:1,,
b:22,
c:空,
d:1
};
对于(变量i=0;i

我这里缺少什么?

您使用了错误的循环,并将对象视为数组。使用

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

var数据={
答:1,,
b:22,
c:空,
d:1
};
用于(数据中的var i){
if(数据[i]==null){
数据[i]=0;
}
}

console.log(data)
您使用了错误的循环,并将对象视为数组。使用

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

var数据={
答:1,,
b:22,
c:空,
d:1
};
用于(数据中的var i){
if(数据[i]==null){
数据[i]=0;
}
}

console.log(data)
由于
data
变量是一个对象,因此
length
属性对其不起作用。您可以使用
Array#reduce
Object.keys
来获得所需的结果

var data={a:1,b:22,c:null,d:1};
数据=对象。键(数据)。减少(函数){
数据[a]==null?s[a]=0:s[a]=数据[a];
返回s;
}, {});

控制台日志(数据)
由于
数据
变量是一个对象,因此
长度
属性对其不起作用。您可以使用
Array#reduce
Object.keys
来获得所需的结果

var data={a:1,b:22,c:null,d:1};
数据=对象。键(数据)。减少(函数){
数据[a]==null?s[a]=0:s[a]=数据[a];
返回s;
}, {});

控制台日志(数据)数据.length将未定义,因为没有长度属性。循环如下:data.length将是未定义的,因为没有length属性。循环如下: