首页 > 嵌套循环的问题

嵌套循环的问题

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的情况

【热门文章】
【热门文章】