search

Home  >  Q&A  >  body text

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

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

巴扎黑巴扎黑2897 days ago305

reply all(2)I'll reply

  • 黄舟

    黄舟2017-04-10 15:18:53

    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);
        }
    }
    

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:18:53

    a,b分别排序后遍历比较

    http://underscorejs.org/#isEqual

    reply
    0
  • Cancelreply