2012-10-07 2 views
6

UnderscoreJS_.countBy() 메서드를 사용하여 다음 데이터를 요약하는 방법을 알아 내려고 노력 중입니다..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"}} 
] 

내가 이런 식으로 요약하고 싶습니다 : 나는 다음과 같은 데이터가

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

가 어떻게 Underscore.js에서 제공하는 _.countBy() 방법으로이 통과 할 ?

+0

를 제쳐두고 : 몇을 받아보십시오 당신이 가지고있는 답을 더 많이 십. 들어갈 수있는 좋은 습관입니다. – Tomalak

+0

OK - 그러면 어디에서 대답을 수락 할 수 있습니까? 아무데도 옵션이 표시되지 않습니다. – user1513388

+0

확인 찾았습니다. 감사! – 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의 값을 웹 페이지에 추가하는 가장 좋은 방법은 무엇입니까? –

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 
관련 문제