两个二维数组比较,求不同项

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,找出两个数组的不同项。
求以最高性能快速解出!

阅读 8.7k
2 个回答
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);
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题