首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript对象添加赋值操作符

Javascript对象添加赋值操作符
EN

Stack Overflow用户
提问于 2015-04-23 01:03:39
回答 3查看 1.5K关注 0票数 1

我试图在javascript对象中使用加法赋值操作符,以便将学生选举中的票数相加。鉴于以下情况:

代码语言: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循环,以便计数和创建一个新对象,其中包含候选人的姓名和他们拥有的选票数:

代码语言:javascript
复制
var President = {};
for (var student in votes) {
  President[votes[student].president] += 1;
};

您可能已经知道,它为我提供了所有的NaN值。

如何在每次迭代中获得属性的密钥增加?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-23 01:07:37

问题是您没有初始化该值。所以当你第一次遇到一个名字的时候,你有一个未定义的President[votes[student].president],所以undefined + 1会给你NaN,然后每个添加都会给你NaN,因为NaN + 1NaN

代码语言:javascript
复制
var President = {}, president;
for (var student in votes) {
    president = votes[student].president;
    if (!President[president]) {
        President[president] = 0;
    }
    President[president] += 1;
};
票数 0
EN

Stack Overflow用户

发布于 2015-04-23 01:05:52

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

代码语言:javascript
复制
if(President[votes[student].president]) {
  President[votes[student].president] += 1
} else {
  President[votes[student].president] = 1;
}
票数 0
EN

Stack Overflow用户

发布于 2015-04-23 01:08:00

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

代码语言:javascript
复制
    var President = {};
    for (var student in votes) {
      if(!President[votes[student].president]){
         President[votes[student].president] = 0; 
      }
      President[votes[student].president] += 1;
    };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29811745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档