2014-12-01 63 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