2012-10-07 29 views
6

Tôi đang cố gắng tìm hiểu cách tôi có thể tóm tắt dữ liệu sau bằng phương pháp _.countBy() trong UnderscoreJS. Tôi có các dữ liệu sau:Tóm tắt dữ liệu bằng cách sử dụng .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"}} 
] 

Tôi muốn tóm tắt nó như thế này:

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

Làm thế nào tôi sẽ chuyển thông tin này vào _.countBy() phương pháp được cung cấp bởi Underscore.js?

+0

Là một sang một bên: Cố gắng chấp nhận một vài nhiều câu trả lời bạn có mười. Đó là một thói quen tốt để tham gia. – Tomalak

+0

OK - Vậy tôi có thể chấp nhận câu trả lời ở đâu. Tôi không thấy tùy chọn ở bất cứ đâu. – user1513388

+0

OK Tìm thấy nó. Cảm ơn! – user1513388

Trả lời

13

Hãy thử điều này:

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

hoàn hảo đã hoạt động! Không quan tâm obj.value.signature_algorithm.replace ("", "_") là gì; dòng nào? – user1513388

+0

nó thay thế các dấu cách trong tên quốc gia bằng dấu gạch dưới, để các phím hợp lệ. (mặc dù không chính xác yêu cầu :)) –

+0

Cách tốt nhất để sau đó thêm các giá trị từ countData vào một trang web là gì? –

1

"js sạch":

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

Kết quả:

Germany 2 
Hungary 2 
Norway 1 
United Kingdom 2 
United States 3 
Các vấn đề liên quan