在js中,如何得到两个数组之间不同的元素?

coding2live 2021-01-20 12:24:21 107

在js中,有没有现成的方法可以获取两个数组之间的差异?

例如下面的两个数组,有没有方法可以对比二者,然后返回它们之间不同的元素:[‘c’, ‘d’]:

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

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

以下答案仅供参考

以下的方法是假设你在普通的数组之间进行比较。

如果不是的话,需要把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"));

如果不需要保持兼容性的话,也可以使用filter