var obj = {
a1 : {key1: 50, key2:60, key3:0},
a2 : {key1: 0, key2:60, key3:0},
a3 : {key1: 50, key2:0, key3:0},
a4 : {key1: 50, key2:60, key3:0}
}
var arr = [];
for(var i in obj) {
for(var j in obj[i] ) {
arr[j] += obj[i][j];
}
}
console.log(arr);
我想取得a1,z2,z3,z4的key1(key2,key3,key4)值的和,现在打印出来的显示NaN了是怎么回事?
因为每一个 arr[j]
都没有初始值
应该这样:
arr[j] = arr[j] || 0;
arr[j] += obj[i][j];
而且 arr
不应该为数组:
var arr = {};
var obj = {
a1 : {key1: 50, key2:60, key3:0},
a2 : {key1: 0, key2:60, key3:0},
a3 : {key1: 50, key2:0, key3:0},
a4 : {key1: 50, key2:60, key3:0}
}
var arr = [];
arr['key1'] = 0;
arr['key2'] = 0;
arr['key3'] = 0;
for(var i in obj) {
for(var j in obj[i] ) {
arr[j] += obj[i][j];
}
}
console.log(arr);
arr[j]初值是undefined,undefined+数字得到了NaN,给arr[j]一个初始值0,或者累加的时候处理一下undefined的情况