为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Javascript中获取两个数组之间的差异?

如何在Javascript中获取两个数组之间的差异?

如何在Javascript中获取两个数组之间的差异?有没有办法在JavaScript中返回两个数组之间的差异?例如:var a1 = ['a', 'b'];var a2 = ['a', 'b', 'c', 'd'];// need ["c", "d"]任何建议都非常感谢。
查看完整描述

3 回答

?
弑天下

TA贡献1818条经验 获得超7个赞

我假设你正在比较一个普通的数组。如果没有,则需要将for循环更改for ... in循环。


function arr_diff (a1, a2) {


    var a = [], diff = [];


    for (var i = 0; i < a1.length; i++) {

        a[a1[i]] = true;

    }


    for (var i = 0; i < a2.length; i++) {

        if (a[a2[i]]) {

            delete a[a2[i]];

        } else {

            a[a2[i]] = true;

        }

    }


    for (var k in a) {

        diff.push(k);

    }


    return diff;

}


console.log(arr_diff(['a', 'b'], ['a', 'b', 'c', 'd']));

console.log(arr_diff("abcd", "abcde"));

console.log(arr_diff("zxc", "zxc"));

如果您不关心向后兼容性,更好的解决方案是使用过滤器。但是,这个解决方案仍然有效。


查看完整回答
反对 回复 2019-05-28
?
交互式爱情

TA贡献1712条经验 获得超3个赞

Array.prototype.diff = function(a) {

    return this.filter(function(i) {return a.indexOf(i) < 0;});

};


////////////////////  

// Examples  

////////////////////


[1,2,3,4,5,6].diff( [3,4,5] );  

// => [1, 2, 6]


["test1", "test2","test3","test4","test5","test6"].diff(["test1","test2","test3","test4"]);  

// => ["test5", "test6"]

Array.prototype.diff = function(a) {

    return this.filter(function(i) {return a.indexOf(i) < 0;});

};


////////////////////  

// Examples  

////////////////////


var dif1 = [1,2,3,4,5,6].diff( [3,4,5] );  

console.log(dif1); // => [1, 2, 6]



var dif2 = ["test1", "test2","test3","test4","test5","test6"].diff(["test1","test2","test3","test4"]);  

console.log(dif2); // => ["test5", "test6"]

注意 indexOf和filter在ie9之前不可用。


查看完整回答
反对 回复 2019-05-28
?
12345678_0001

TA贡献1802条经验 获得超5个赞

到目前为止,这是使用jQuery获得您正在寻找的结果的最简单方法:

var diff = $(old_array).not(new_array).get();

diff现在包含了old_array不存在的内容new_array


查看完整回答
反对 回复 2019-05-28
  • 3 回答
  • 0 关注
  • 1665 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信