2015-04-23 57 views
0

我想在一個JavaScript對象中使用一個附加賦值運算符,以便在學生選舉中累計投票數。鑑於以下幾點:Javascript Object Addition Assignment Operator

var votes = { 
    "Alex": { president: "Bob", vicePresident: "Devin", secretary: "Gail", treasurer: "Kerry" }, 
    "Bob": { president: "Mary", vicePresident: "Hermann", secretary: "Fred", treasurer: "Ivy" }, 
    "Cindy": { president: "Cindy", vicePresident: "Hermann", secretary: "Bob", treasurer: "Bob" }, 
    "Devin": { president: "Louise", vicePresident: "John", secretary: "Bob", treasurer: "Fred" }, 
    "Ernest": { president: "Fred", vicePresident: "Hermann", secretary: "Fred", treasurer: "Ivy" }, 
    "Fred": { president: "Louise", vicePresident: "Alex", secretary: "Ivy", treasurer: "Ivy" }, 
    "Gail": { president: "Fred", vicePresident: "Alex", secretary: "Ivy", treasurer: "Bob" }, 
    "Hermann": { president: "Ivy", vicePresident: "Kerry", secretary: "Fred", treasurer: "Ivy" }, 
    "Ivy": { president: "Louise", vicePresident: "Hermann", secretary: "Fred", treasurer: "Gail" }, 
    "John": { president: "Louise", vicePresident: "Hermann", secretary: "Fred", treasurer: "Kerry" }, 
    "Kerry": { president: "Fred", vicePresident: "Mary", secretary: "Fred", treasurer: "Ivy" } 
}; 

我試圖瓶坯的/在以計數和創建候選人姓名的新對象和投票數圈,他們有:

var President = {}; 
for (var student in votes) { 
    President[votes[student].president] += 1; 
}; 

你可能已經知道,這給了我所有的NaN值。

如何獲得每次迭代增加財產的密鑰?

+0

'President'是一個空對象,增量爲null,你得到NaN,你需要給它一些初始數值。 –

回答

0

問題是你沒有初始化值。所以,你會遇到一個名稱的第一次,你有President[votes[student].president]爲未定義,所以undefined + 1會給你NaN,此後每增加會給你NaN因爲NaN + 1NaN

var President = {}, president; 
for (var student in votes) { 
    president = votes[student].president; 
    if (!President[president]) { 
     President[president] = 0; 
    } 
    President[president] += 1; 
}; 
0

你只需要在增加它之前用一個值初始化President[votes[student].president]。也許有這樣的事情:

if(President[votes[student].president]) { 
    President[votes[student].president] += 1 
} else { 
    President[votes[student].president] = 1; 
} 
0

更改您的代碼爲這一個,你看你需要初始化你的變量;)

var President = {}; 
    for (var student in votes) { 
     if(!President[votes[student].president]){ 
     President[votes[student].president] = 0; 
     } 
     President[votes[student].president] += 1; 
    };