我正在尝试遍历此对象并为每个人添加值。为什么这会返回NaN
?
var result = {
"alex": {
"1": 9.333333333333334,
"2": 7.666666666666666,
"3": 8.666666666666668,
"4": 8.666666666666668,
"5": 9.666666666666668,
"6": 9,
"7": 10,
"8": 10,
"9": 9.333333333333334,
"10": 8.333333333333334,
"11": 10,
"12": 9.333333333333334
},
"frank": {
"1": 9.666666666666668,
"2": 10,
"3": 9.333333333333334,
"4": 9.333333333333334,
"5": 9.333333333333334,
"6": 9.333333333333334,
"7": 8.666666666666666,
"8": 9,
"9": 9.333333333333334,
"10": 8.666666666666668,
"11": 7.666666666666666,
"12": 8.666666666666668
}
}
var res1, res2;
for (var key in result.alex) {
res1 += parseInt(result.alex[key]);
}
for (var key in result.frank) {
res2 += parseInt(result.frank[key]);
}
console.log("Res1: " + res1);
console.log("Res2: " + res2);
如果我删除了+
,那么我会得到一个有效的号码,但是,它显然只有一个数字。
这里的问题是什么?
答案 0 :(得分:3)
您的变量未初始化为0.您正在为未初始化的变量添加数字。
初始化res1,res2如下所示。
var res1 = 0, res2=0;
var result = {
"alex": {
"1": 9.333333333333334,
"2": 7.666666666666666,
"3": 8.666666666666668,
"4": 8.666666666666668,
"5": 9.666666666666668,
"6": 9,
"7": 10,
"8": 10,
"9": 9.333333333333334,
"10": 8.333333333333334,
"11": 10,
"12": 9.333333333333334
},
"frank": {
"1": 9.666666666666668,
"2": 10,
"3": 9.333333333333334,
"4": 9.333333333333334,
"5": 9.333333333333334,
"6": 9.333333333333334,
"7": 8.666666666666666,
"8": 9,
"9": 9.333333333333334,
"10": 8.666666666666668,
"11": 7.666666666666666,
"12": 8.666666666666668
}
}
var res1 = 0, res2=0;
for (var key in result.alex) {
res1 += parseInt(result.alex[key]);
}
for (var key in result.frank) {
res2 += parseInt(result.frank[key]);
}
console.log("Res1: " + res1);
console.log("Res2: " + res2);

答案 1 :(得分:1)
这是因为res1和res2未定义,只需将其定义为0
var result = {
"alex": {
"1": 9.333333333333334,
"2": 7.666666666666666,
"3": 8.666666666666668,
"4": 8.666666666666668,
"5": 9.666666666666668,
"6": 9,
"7": 10,
"8": 10,
"9": 9.333333333333334,
"10": 8.333333333333334,
"11": 10,
"12": 9.333333333333334
},
"frank": {
"1": 9.666666666666668,
"2": 10,
"3": 9.333333333333334,
"4": 9.333333333333334,
"5": 9.333333333333334,
"6": 9.333333333333334,
"7": 8.666666666666666,
"8": 9,
"9": 9.333333333333334,
"10": 8.666666666666668,
"11": 7.666666666666666,
"12": 8.666666666666668
}
}
var res1=0, res2=0;
for (var key in result.alex) {
res1 += parseInt(result.alex[key]);
}
for (var key in result.frank) {
res2 += parseInt(result.frank[key]);
}
console.log("Res1: " + res1);
console.log("Res2: " + res2);
答案 2 :(得分:0)
Proeprties res1
和res2
为undefined
。如果您要向undefined
添加一些号码,结果将为NaN
。因此,您需要使用0
值初始化该属性。
var res1 = 0, res2 = 0;
答案 3 :(得分:0)
将res1和res2初始化为0,之后执行+ =。
var result = {
"alex": {
"1": 9.333333333333334,
"2": 7.666666666666666,
"3": 8.666666666666668,
"4": 8.666666666666668,
"5": 9.666666666666668,
"6": 9,
"7": 10,
"8": 10,
"9": 9.333333333333334,
"10": 8.333333333333334,
"11": 10,
"12": 9.333333333333334
},
"frank": {
"1": 9.666666666666668,
"2": 10,
"3": 9.333333333333334,
"4": 9.333333333333334,
"5": 9.333333333333334,
"6": 9.333333333333334,
"7": 8.666666666666666,
"8": 9,
"9": 9.333333333333334,
"10": 8.666666666666668,
"11": 7.666666666666666,
"12": 8.666666666666668
}
}
var res1 = 0, res2 = 0;
for (var key in result.alex) {
res1 += parseInt(result.alex[key]);
}
for (var key in result.frank) {
res2 += parseInt(result.frank[key]);
}
console.log("Res1: " + res1);
console.log("Res2: " + res2);
答案 4 :(得分:0)
因为res1
和res2
是不可取的。您应该将其声明为var res1=0, res2=0;