1
我有两个类别:骨干集合 - 如何过滤与其他集合的集合?
收集
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 ]);
我想要得到的是不包含在B
的A
车型的阵列。例如,我想获得一个数组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/
谢谢!
哦谢谢!我喜欢这个选项。我没有看到这种方法。我希望这是有效的。 – oriolparra
+1。要知道的一个好消息是,只有当模型是两个集合中的* same * Model实例时,这才有效。如果它们是两个不同的实例,即使它们的所有属性都相同,它也不会。 – jevakallio