2014-07-18 78 views
0

我有两个数组:寻找差异对象

var one = [ 
    Object { _id="53c907016b7536a18b0001ab", title="..." }, 
    Object { _id="53c90942b879875e2b0001ec", title="..." } 
] 

var two = [ 
    Object { _id="53c907016b7536a18b0001ab", title="..." } 
] 

我希望找到的差异,即

[ 
    Object { _id="53c90942b879875e2b0001ec", title="..." } 
] 

使用underscore.js,我想:

var difference = _.difference(one, two); 

但是,返回整个one数组,而不是差异。

我认为问题是我的数组包含对象而不是基元。如果是这样的话,我怎么能说出下划线使用_id的值进行比较?

+0

谢谢,我想这个答案,http://stackoverflow.com/a/19547466/795016,解决了我的问题。 – Ben

回答

1

尝试之后,它适用于只是两个数组

_.reject(one, function(obj){ return _.findWhere(two, obj); }); 

但对象应该是这样的波纹管

var one = [ 
{ _id:"53c907016b7536a18b0001ab", title:"..." }, 
{ _id:"53c90942b879875e2b0001ec", title:"..." } 
] 

var two = [ 
    { _id:"53c907016b7536a18b0001ab", title:"..." } 
] 
+0

谢谢!有没有人知道这是如何执行相比__filter(一,函数(obj){返回!_。findWhere(two,obj);});' – Ben

+0

我不知道,但我使用是这样的,因为只是我试图逃避'return!something'。 – Mritunjay