使用.countBy汇总数据

use*_*388 7 underscore.js

我试图找出如何使用UnderscoreJS中_.countBy()方法汇总以下数据.我有以下数据:

var data =
[
    {"id":"338b79f07dfe8b3877b3aa41a5bb8a58","value":{"country":"United States"}},
    {"id":"338b79f07dfe8b3877b3aa41a5bb983e","value":{"country":"Norway"}},
    {"id":"338b79f07dfe8b3877b3aa41a5ddfefe","value":{"country":"Hungary"}},
    {"id":"338b79f07dfe8b3877b3aa41a5fe29d7","value":{"country":"United States"}},
    {"id":"b6ed02fb38d6506d7371c419751e8a14","value":{"country":"Germany"}},
    {"id":"b6ed02fb38d6506d7371c419753e20b6","value":{"country":"Hungary"}},
    {"id":"b6ed02fb38d6506d7371c419755f34ad","value":{"country":"United States"}},
    {"id":"b6ed02fb38d6506d7371c419755f3e17","value":{"country":"Germany"}},
    {"id":"338b79f07dfe8b3877b3aa41a506082f","value":{"country":"United Kingdom"}},
    {"id":"9366afb036bf8b63c9f45379bbe29509","value":{"country":"United Kingdom"}}
]
Run Code Online (Sandbox Code Playgroud)

我想这样总结一下:

{ 
    United_States: 3,
    Norway: 1,
    Hungary: 2,
    Germany: 2,
    United_Kingdom: 2
}
Run Code Online (Sandbox Code Playgroud)

我如何将其传递_.countBy()给Underscore.js提供的方法?

Cha*_*ndu 15

试试这个:

var data =
[
    {"id":"338b79f07dfe8b3877b3aa41a5bb8a58","value":{"country":"United States"}},
    {"id":"338b79f07dfe8b3877b3aa41a5bb983e","value":{"country":"Norway"}},
    {"id":"338b79f07dfe8b3877b3aa41a5ddfefe","value":{"country":"Hungary"}},
    {"id":"338b79f07dfe8b3877b3aa41a5fe29d7","value":{"country":"United States"}},
    {"id":"b6ed02fb38d6506d7371c419751e8a14","value":{"country":"Germany"}},
    {"id":"b6ed02fb38d6506d7371c419753e20b6","value":{"country":"Hungary"}},
    {"id":"b6ed02fb38d6506d7371c419755f34ad","value":{"country":"United States"}},
    {"id":"b6ed02fb38d6506d7371c419755f3e17","value":{"country":"Germany"}},
    {"id":"338b79f07dfe8b3877b3aa41a506082f","value":{"country":"United Kingdom"}},
    {"id":"9366afb036bf8b63c9f45379bbe29509","value":{"country":"United Kingdom"}}
];

var countData = _.countBy(data, function(obj){
    return obj.value.country.replace(" ", "_");
}); 

console.log(countData);
Run Code Online (Sandbox Code Playgroud)

JSFiddle:http://jsfiddle.net/hyDv7/1/