1

我有两个收藏:

  • Amodel1, model2, model3,收集model4

  • Bmodel2,的集合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. 例如,我想得到一个带有model1and的数组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/

谢谢!

4

1 回答 1

3

使用可以使用下划线的方法_.differencehttp://underscorejs.org/#difference

var results = _.difference(A.models, B.models);
于 2013-01-09T18:26:23.720 回答