2014-01-29 121 views
0

我想计算一个嵌套的JavaScript对象中出现的次数并将其分配给一个对象。我知道我需要一个for循环,但我不知道如何计算每次发生值时。这里是我需要统计对象:嵌套的javaScript对象的计数值

var emmys = { 
    "Alex": { drama: "Bob", horror: "Devin", romCom: "Gail", thriller: "Kerry" }, 
    "Bob": { drama: "Mary", horror: "Hermann", romCom: "Fred", thriller: "Ivy" }, 
    "Cindy": { drama: "Cindy", horror: "Hermann", romCom: "Bob", thriller: "Bob" }, 
    "Devin": { drama: "Louise", horror: "John", romCom: "Bob", thriller: "Fred" }, 
    "Ernest": { drama: "Fred", horror: "Hermann", romCom: "Fred", thriller: "Ivy" }, 
    "Fred": { drama: "Louise", horror: "Alex", romCom: "Ivy", thriller: "Ivy" } 
} 

var showVote = { 
    drama: {}, 
    horror: {}, 
    romCom: {}, 
    thriller: {} 
} 

我想回去是这样的:

var showVote = { 
     drama: { Louise: 2}, //etc 
     horror: {Hermann: 3}, 
     romCom: {}, 
     thriller: {} 
    } 

回答

1

我的球员之一,喜欢原生功能:

var result = Object.keys(emmys).reduce(function(res,person){ 
    var movieName =""; 
    Object.keys(emmys[person]).forEach(function(key){ 
     movieName = emmys[person][key]; 
     if (!res[key][movieName]){ res[key][movieName] = 0; } 
     res[key][movieName] += 1; 
    }); 
    return res; 
}, {drama: {},horror: {},romCom: {},thriller: {}}); 

我试图用一些描述性的名字,但我不确定它们是对的:)

+1

+1绝对比我的更优雅... – PinnyM

+0

@PinnyM非常感谢我的欣赏 – Dalorzo