同じ質問が数回投稿されています。こちらをご覧ください。
JavaScript配列の違い
ただし、ほとんどのソリューションは「ネイティブ」JavaScriptを介して提供されます。私はbackbone.jsを使用して多くのものを構築し、アンダースコアはBackboneの依存関係であるため、underscore.jsを使用することを好むことがあります。だから私はその素晴らしいユーティリティを使うことができます。あなたはそれらをロードすることを検討するかもしれません:
http://documentcloud.github.com/underscore/
var a1 = [ { ID: 2, N:0 }, { ID: 1, N:0 } ];
var a2 = [ { ID: 1, N:0 }, { ID: 2, N:0 }, { ID: 3, N:0 } ];
var from, to;
if(a1 > a2){
from = a1
to = a2
} else {
from = a2
to = a1
}
var a3 = _.filter(from, function(obj){
var compare = _.find(to, function(obj2){ return obj.ID === obj2.ID });
return compare === undefined
});
console.log(a3);
最初に最長の配列を決定しました。これは、できるだけ多くのオブジェクトを短いリストと比較したいためです。そうでなければ、私たちはいくつかを「忘れる」でしょう。
次に、フィルターを使用してunderscore.jsライブラリで検索し、短い配列には含まれていないが長い配列にはあるオブジェクトを返します。
両方の配列の長さが等しい場合も問題ありません。すべてのアイテムを他のすべてのアイテムと比較するためです。