2014-12-01 60 views
0

混亂標題的數組,唯一的簡單的方法來解釋就是告訴你什麼是我後我:Lodash /下劃線:在陣列中檢查的值,在對象

var user = [ 
    {foo:"test",bar:1}, 
    {foo:"test2",bar:2} 
]; 

var items = [{foo:"test",bar:1},{foo:"test4",bar:4},{foo:"test5",bar:5}] 

我想要什麼,是從items中挑選一個項目,該項目還不在user中,並將其添加到user。在這種情況下,user對象最終會看起來像:

user = [ 
    {foo:"test",bar:1}, 
    {foo:"test2",bar:2}, 
    {foo:"test4",bar:4} 
]; 

我已經試過各種_.filter的,_.contains等..組合,但不能完全弄清楚。任何幫助將非常感激!

+0

爲什麼'test4'但不是'test5'? – Mathletics 2014-12-01 23:28:21

+0

如果一個用戶將所有項目都拿走,那麼cus會是自私的;)可以是一個或另一個,但它沒有區別。 – xShirase 2014-12-01 23:30:14

回答

1

邏輯如下:您想查找user陣列中未包含的第一個項目。

所以,你可以做到以下幾點:

var item = _.find(items, function (item) { 
    return !_.findWhere(user, item); 
}); 

jsFiddle Demo

+0

哇,這很漂亮,我已經開始寫一個醜陋的循環來完成這項工作。謝謝! – xShirase 2014-12-01 23:46:40