2013-03-21 2 views
2
var data1 = [ 
    {"year":2000,"country":"Madagascar","country_id":847,"group":"Economic Statistics "}, 
    {"year":2005,"country":"Madagascar","country_id":847,"group":"Economic Statistics "}, 
    {"year":2000,"country":"Madagascar","country_id":847,"group":"Economic Statistics "}, 
    {"year":2005,"country":"Libya","country_id":846,"group":"Demographic and Social Statistics "}, 
    {"year":2008,"country":"Libya","country_id":846,"group":"Demographic and Social Statistics "}, 
    {"year":2005,"country":"Libya","country_id":846,"group":"Demographic and Social Statistics "} 
] 

Это мои данные в формате JSON, я хочу фильтровать в зависимости от страны, и год (уникальный) с использованием underscore.jsфильтр с использованием underdescore.js

+0

Что вы пробовали? Функция ['_.filter'] (http://underscorejs.org/#filter) представляется полезной. –

+0

Что значит «база по стране, год (uniq)»? Вы хотите, чтобы элементы, в которых уникальная пара значений 'year',' country' уникальна? То есть вам нужны только строки # 2 и # 5? –

+0

Возможно, вы хотите что-то вроде того, что делает метод ['_.uniq' (http://underscorejs.org/#uniq)? –

ответ

3

Если вы хотите, чтобы выбрать уникальные элементы на основе какой-то ключ, вы можете используйте метод _.uniq (или _.unique). Он дополнительно принимает обратный вызов для преобразования элемента в свой ключ для сравнения. Массивы с одним и тем же содержимым сравниваются как разные, поэтому вам, вероятно, понадобится привести ваш ке; JSON.stringify может быть использован для этого (или вы можете использовать + - с последствиями):

data1=_.uniq(data1, function(x){ 
    return JSON.stringify([x.year, x.country_id]) 
}); 

Демо: http://jsfiddle.net/honnza/xGr9e/

Если вы хотите сохранить только те значения, с некоторыми конкретными значениями year и country_id, это еще проще:

data1=_.filter(data1, function(x){ 
    return x.year === target_year && x.country_id === target_country_id 
}); 
+0

спасибо, что он отлично работает – sobha

Смежные вопросы