2014-01-24 16 views
0

我有對象的數組,從我需要找到其爲「年齡= 1」和「NAME =一個」如何將它們結合兩者的對象..下劃線如何合併過濾對象或在集合中找到兩個屬性?

我嘗試..

var array = [ 
    {'name':'one', "age":'3'}, 
    {'name':'two', "age":'1'}, 
    {'name':'three', "age":'3'}, 
    {'name':'four', "age":'1'}, 
    {'name':'one', "age":'7'} 
] 
var required = ['one', '1']; 

var name = _.where(array, {'name':'one'}); 
var age = _.where(array, {'age':'1'}); 

var combine = $.extend({}, name, age) 
console.log(combine); // getting only age based objects... 

如何使用下劃線方法本身獲得這兩個屬性對象?

Demo

回答

1

您可以使用reduce功能。 Demo

var combine = _.reduce(array, function(result, obj) { 
    if (obj.name === 'one' || obj.age === '1') {result.push(obj);} 
    return result; 
}, []); 
+0

以及你能幫我基於價值觀的數組刪除對象..這裏是演示.. HTTP:// jsfiddle.net/kcnk3/5/我如何刪除? – 3gwebtrain

+0

如果我理解正確 - 那麼你可以再次使用reduce:http://jsfiddle.net/njhkr/ – Kiril

1

一般過濾/搜索功能是_.filter

濾波器_.filter(list, iterator, [context])

看起來穿過列表各值,返回所有值的陣列通過真相測試(迭代器)。如果它存在,則代表原生過濾器方法。

所以,你想:

_(array).filter(function(e) { 
    return e.name === 'one' || e.age === '1'; 
}); 

演示:http://jsfiddle.net/ambiguous/aw2Hj/

相關問題