我有两个系列:
收藏A
与model1
,model2
,model3
,model4
。
收藏B
与model2
,model3
。
例如:
var model1 = new models.ExModel({id: "1", name: "model1"});
var model2 = new models.ExModel({id: "2", name: "model2"});
var model3 = new models.ExModel({id: "3", name: "model3"});
var model4 = new models.ExModel({id: "4", name: "model4"});
var A = new collections.ExCol([ model1, model2, model3, model4 ]);
var B = new collections.ExCol([ model2, model3 ]);
我希望获得A
中未包含的B
模型数组。例如,我想获得一个包含model1
和model4
的数组。我怎样才能以最有效的方式做到这一点?
我已经考虑过两种选择,但我不知道是否是最好的方法。我认为Option1比Option2更有效。
选项1:
var idsB = B.pluck("id");
var result = A.filter( function(m) { return idsB.indexOf(m.id) === -1; } );
选项2:
var result = A.filter( function(m) { return !B.contains(m); });
完整示例:http://jsfiddle.net/VH3HU/
谢谢!
答案 0 :(得分:2)
使用可以使用下划线方法_.difference
。 http://underscorejs.org/#difference
var results = _.difference(A.models, B.models);