2012-10-07 16 views
6

Sto cercando di capire come è possibile riepilogare i seguenti dati utilizzando il metodo _.countBy() in UnderscoreJS. Ho i seguenti dati:Riepilogare i dati utilizzando .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"}} 
] 

vorrei riassumere in questo modo:

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

Come dovrei passare questo al metodo _.countBy() fornito da Underscore.js?

+0

Per inciso: Prova ad accettare alcuni più delle risposte che hai dieci. È una buona abitudine entrare. – Tomalak

+0

OK: quindi dove posso accettare una risposta. Non vedo un'opzione da nessuna parte. – user1513388

+0

OK Trovato. Grazie! – user1513388

risposta

13

Prova questo:

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

perfetto che ha funzionato! Fuori interesse cosa obj.value.signature_algorithm.replace ("", "_"); linea fare? – user1513388

+0

sostituisce gli spazi nel nome del paese con caratteri di sottolineatura, in modo che le chiavi siano valide. (anche se non esattamente richiesto :)) –

+0

Qual è il modo migliore per aggiungere i valori da countData a una pagina Web? –

1

"js Clean":

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

Risultato:

Germany 2 
Hungary 2 
Norway 1 
United Kingdom 2 
United States 3 
Problemi correlati