如何比较 Backbone 中的两个集合?

我有两个集合1C包含1,2,3,而2C包含2,4,5,我想要做的是从2C中删除2,因为1C在正常渲染集合后已经具有2值。

我试过了

this.1C.each(function(model1){
  this.2C.each(function(model2){
     if(model1 === model2){
        2C.remove(model2);
     }
  });
});

但它不起作用。有任何想法吗?

最佳答案

我会冒险猜测到model1和model2永远不会是模型的同一实例,因此永远不会匹配。您是否尝试过比较型号ID或类似型号?例如。 model1.id == model2.id

也许添加一些调试,以便您可以查看发生了什么。

this.1C.each(function(model1){
  console.log('m1:'+model1.categoryCode);
  this.2C.each(function(model2){
     console.log('  m2:'+model2.categoryCode);
     if(model1.categoryCode == model2.categoryCode){
        console.log('removing m2:'+model2.categoryCode);
        2C.remove(model2);
     }
  });
});

09-25 18:02