Javascript 对象加法赋值运算符

Javascript Object Addition Assignment Operator

我正在尝试在 javascript 对象中使用加法赋值运算符,以便将学生选举中的票数相加。鉴于以下内容:

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" }
};

我正在尝试执行一个 for/in 循环,以便计算并创建一个包含候选人姓名及其得票数的新对象:

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

您可能已经知道,它给出了所有 NaN 值。

如何让 属性 的键在每次迭代中增加?

您只需在递增前用一个值初始化 President[votes[student].president]。也许是这样的:

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

问题是您没有初始化值。所以第一次遇到一个名字时,你有 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;
};

为此更改您的代码,如您所见,您需要初始化变量 ;)

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