一尘不染

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

javascript

有没有办法返回JavaScript中两个数组之间的差?

例如:

var a1 = ['a', 'b'];
var a2 = ['a', 'b', 'c', 'd'];

// need ["c", "d"]

阅读 294

收藏
2020-04-22

共1个答案

一尘不染

我假设您正在比较普通数组。如果不是,则需要将 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"));

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

2020-04-22