javascript - 嵌套循环的问题
PHPz
PHPz 2017-04-11 12:05:30
[JavaScript讨论组]
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了是怎么回事?

PHPz
PHPz

学习是最好的投资!

全部回复(3)
黄舟

因为每一个 arr[j] 都没有初始值

应该这样:

arr[j] = arr[j] || 0;
arr[j] += obj[i][j];

而且 arr 不应该为数组:

var arr = {};
阿神

arr[j]初值是undefined,undefined+数字得到了NaN,给arr[j]一个初始值0,或者累加的时候处理一下undefined的情况

伊谢尔伦
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);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号