var $a=[{id:1,name:"a"},{id:2,name:"b"},{id:3,name:"c"},{id:4,name:"d"}], $b=[{id:1,name:"a"},{id:2,name:"b"},{id:3,name:"c"},{id:4,name:"d"},{id:5,name:"e"},{id:6,name:"f"},{id:7,name:"g"},{id:8,name:"h"}]; 有两个二维数组,分别是$a和$b,找出两个数组的不同项。 求以最高性能快速解出!
var $a=[{id:1,name:"a"},{id:2,name:"b"},{id:3,name:"c"},{id:4,name:"d"}], $b=[{id:1,name:"a"},{id:2,name:"b"},{id:3,name:"c"},{id:4,name:"d"},{id:5,name:"e"},{id:6,name:"f"},{id:7,name:"g"},{id:8,name:"h"}]; console.table( array_diff($a, $b) ); function array_diff(a, b) { return diff(a, b).concat( diff(b, a) ); function diff(a, b) { var c = {}; b.forEach(function(o){ c[ JSON.stringify(o) ] = 0 }); a.forEach(function(o){ delete c[ JSON.stringify(o) ]; }); return Object.keys(c).map(JSON.parse); } }
a,b分别排序后遍历比较
http://underscorejs.org/#isEqual
a,b分别排序后遍历比较
http://underscorejs.org/#isEqual