javascript - 循环遍历对象中的对象,然后将属性添加到javascript中的另一个对象

标签 javascript

希望能够将一个对象中的一个对象的属性添加到一个单独的对象,已经让它工作到一定程度,但我得到了 NaN 返回?

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" },
"Louise": { president: "Nate", vicePresident: "Alex", secretary: "Mary", treasurer: "Ivy" },
"Mary": { president: "Louise", vicePresident: "Oscar", secretary: "Nate", treasurer: "Ivy" },
"Nate": { president: "Oscar", vicePresident: "Hermann", secretary: "Fred", treasurer: "Tracy" },
"Oscar": { president: "Paulina", vicePresident: "Nate", secretary: "Fred", treasurer: "Ivy" },
"Paulina": { president: "Louise", vicePresident: "Bob", secretary: "Devin", treasurer: "Ivy" },
"Quintin": { president: "Fred", vicePresident: "Hermann", secretary: "Fred", treasurer: "Bob" },
"Romanda": { president: "Louise", vicePresident: "Steve", secretary: "Fred", treasurer: "Ivy" },
"Steve": { president: "Tracy", vicePresident: "Kerry", secretary: "Oscar", treasurer: "Xavier" },
"Tracy": { president: "Louise", vicePresident: "Hermann", secretary: "Fred", treasurer: "Ivy" },
"Ullyses": { president: "Louise", vicePresident: "Hermann", secretary: "Ivy", treasurer: "Bob" },
"Valorie": { president: "Wesley", vicePresident: "Bob", secretary: "Alex", treasurer: "Ivy" },
"Wesley": { president: "Bob", vicePresident: "Yvonne", secretary: "Valorie", treasurer: "Ivy" },
"Xavier": { president: "Steve", vicePresident: "Hermann", secretary: "Fred", treasurer: "Ivy" },
"Yvonne": { president: "Bob", vicePresident: "Zane", secretary: "Fred", treasurer: "Hermann" },
"Zane": { president: "Louise", vicePresident: "Hermann", secretary: "Fred", treasurer: "Mary" }
};

// Tally the votes in voteCount.
var voteCount = {
   president: {},
   vicePresident: {},
   secretary: {},
   treasurer: {}
};

for (var student in votes) {
  if (votes.hasOwnProperty(student)) {
    var office = votes[student];
    for (var prop in office) {
      if (!office.hasOwnProperty("president")) {
        voteCount["president"][office["president"]] = 0;
      } else {
        voteCount["president"][office["president"]] += 1;
      }
    }
  }
}

上面的 for in 循环返回 NaN!!!
我正在获取 voteCount 的内容,但没有获取票数?

voteCount 变为

voteCount
{ president: 
  { Bob: NaN,
    Mary: NaN,
    Cindy: NaN,
    Louise: NaN,
    Fred: NaN,

最佳答案

我认为您的错误在于向结果对象添加属性。

这是一种不同的方法,它根据 Angular 色的投票动态构建结果对象。

var results = {};

var n,r,v;

for (n in votes) {
    for (r in votes[n]) {
        if (typeof results[r] === "undefined") {
             results[r] = {};
        }
        if (typeof results[r][votes[n][r]] === "undefined") {
             results[r][votes[n][r]] = 0;
        }
        results[r][votes[n][r]]+=1;
    }
}
console.log(results);

此外,最好将所有变量放在代码的开头,将它们放在 for 中不会限制它们的范围,它们在解析时声明并且将是全局的。

关于javascript - 循环遍历对象中的对象,然后将属性添加到javascript中的另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29812701/

相关文章:

javascript - 循环构建菜单链接时检查是否有状态

javascript - Bootstrap 模态 : close current, 打开新的

javascript - 用于轨道编号的 Angular 2 管

javascript - 如何在单选按钮单击时获取 json 存储的数据

javascript - 如何在调整特定宽度的窗口后使背景图像响应?

javascript - Angular ng-class 在 ng-change 被触发后不更新

javascript - 展开后单击远离图像以将其缩小

javascript - 根据产品价格显示报价

javascript - 加载对象内容后运行 Javascript 函数

javascript - 如何在 jquery.ajax 中发生错误时退出 jquery 中的函数