Тот же вопрос был размещен в несколько раз, посмотрите здесь:
JavaScript array difference
Большинство решений, данное через «родной» JavaScript однако , Я иногда предпочитаю использовать underscore.js, так как я создаю много вещей, используя backbone.js, а подчеркивание - зависимость для Backbone. Поэтому я могу использовать его удивительные утилиты. Вы могли бы рассмотреть их загрузку в:
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 для возврата объектов, которые не находятся в более коротком массиве, но ARE в более длинном массиве.
Если оба массива одинаковой длины, это тоже хорошо, потому что тогда мы сравним все предметы со всеми остальными.
Я просто понял, что _.difference это не ответ. Вы можете найти мое редактирование лучше, все еще используя underscore.js. – Mosselman