2012-10-07 1 views
6

_.countBy()メソッドを使用して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"}} 
] 

私はこのようにそれを要約したい:私はUnderscore.jsが提供する_.countBy()方法にこれを渡す方法

{ 
    United_States: 3, 
    Norway: 1, 
    Hungary: 2, 
    Germany: 2, 
    United_Kingdom: 2 
} 

私は、次のデータがありますか?

+0

:数を受け入れるようにしてくださいあなたが持っている答えの詳細十。に入るのはいい習慣です。 – Tomalak

+0

OK - どこで答えを受け入れることができますか?私はどこにでもオプションが表示されません。 – user1513388

+0

OK見つけました。ありがとう! – user1513388

答えて

13

これを試してみてください:

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); 

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

+0

完璧でした!興味のないものobj.value.signature_algorithm.replace( ""、 "_");行ですか? – user1513388

+0

これは、国名のスペースをアンダースコアに置き換えているため、キーが有効です。 (ただし必ずしも必要ではありません:) –

+0

countDataの値をWebページに追加する最も良い方法は何ですか? –

1

"クリーンJS":

var t = {}; 
for(var i = 0, l = data.length; i < l; i++){ 
    t[data[i].value.country] = !t[data[i].value.country] ? 1 : t[data[i].value.country] + 1; 
} 

結果:余談として

Germany 2 
Hungary 2 
Norway 1 
United Kingdom 2 
United States 3 
関連する問題