2017-10-04 2 views
0

私はこのオブジェクトをループし、各人物の値を加算しようとしています。なぜこれはNaNを返すのですか?これらの数値をjavascriptで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);

私は+を削除した場合、それは明らかにのみ、単一の番号だ、が、その後私は、戻って有効な番号を取得します。

ここで問題は何ですか?

+4

あなたのコードで最初の '+ ='の直前にある 'res1'の値は何ですか? – Teemu

+0

あなたは 'undefined + =' – tallberg

+0

'var res1 = 0;' – Liam

答えて

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

0

Proeprties res1res2undefinedです。 undefinedに数字を追加すると、結果はNaNになります。だから、0値でそのプロパティを初期化する必要があります。あなたは+ =後でやるとしてRES1とRES2が未定義であるためである

var res1 = 0, res2 = 0; 
+0

ありがとう、それを得ました、しかし、彼らは定義されて、彼らはちょうどそれらに割り当てられた値を持っていません。 – ProEvilz

+0

変数を宣言しても値を代入しないと、その値は '未定義です ' –

+1

いいえ、それらは@ProEvilzではありません' undefined'はjavascriptの特殊な型/値です – Liam

1

は、ちょうど、0に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);

+0

ありがとうございます、しかし、それらは定義されています。 – ProEvilz

+2

彼らは定義されていないと宣言されています – marvel308

+0

@ProEvilzそれから彼らは '未定義です' –

0

初期化RES1とRES2にそれを定義します。

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

0

res1res2はundefiendですので。 var res1=0, res2=0;

関連する問題