2014-01-24 91 views
1

我有一個數組,其中有一堆對象,我想通過'name'值過濾對象,再次我想從另一個使用下劃線的對象數組中省略這些對象。如何按值過濾數組中的對象並使用該值來省略另一個數組或對象?

我知道,我們可以用做操作搜索,但我沒有得到正確的方法來做到這一點既..

任何一個可以幫助我做到這一點?

例如:

傳入數組:

var incomingArray = [ 
    {"name":"apple"}, 
    {"name":"orange"}, 
    {"name":"dog"}, 
    {"name":"cat"}, 
    {"name":"egle"} 
]; 

濾波器的鍵:

var omit = ['orange' ,'dog']; 

//我需要檢查, '橙色' 或 '狗' 是否存在如果是這樣。 。

var filtered = _.filter(incomingArray, function(obj, i){ 
    return obj.name === omit[i]['name'];//this is wrong i need to loop again how? 
}); 

var anotherArray = [ 
     {"name":"apple"}, 
     {"name":"orange"}, 
     {"name":"dog"}, 
     {"name":"cat"}, 
     {"name":"egle"} 
] 

return只有沒有像這樣省略的陣列:

var outgoingArray = [ 
    {"name":"apple"}, 
    {"name":"cat"}, 
    {"name":"egle"} ] 

我們如何通過適當的方法來實現這一點?

demo

回答

2

你快到了!使用indexOf檢查名稱不屬於省略數組:

var filtered = _.filter(incomingArray, function(obj) { 
    return omit.indexOf(obj.name) == -1; 
}); 
相關問題