查找包含对象的两个数组之间的差异

时间:2014-07-18 13:16:00

标签: javascript underscore.js

我有两个数组:

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的值进行比较?

1 个答案:

答案 0 :(得分:1)

尝试以下,它适用于两个数组

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

但是对象应该像下面那样

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

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