1

私は2つのコレクションを持っています:

  • 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に含まれていないのモデルの配列を取得したいBmodel1例では、 andで配列を取得したいと考えていますmodel4。最も効率的にこれを行うにはどうすればよいですか?

これを行うには2つのオプションを考えましたが、それが最善の方法かどうかはわかりません。オプション 1 はオプション 2 よりも効率的だと思います。

オプション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 に答える