同样的问题已经发了好几次了,看看这里:
JavaScript 数组的区别
然而,大多数解决方案都是通过“本机”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 库中使用 filter 和 find 来返回不在较短数组中但在较长数组中的对象。
如果两个数组的长度相等,那也很好,因为这样我们会将所有项目与所有其他项目进行比较。