有没有办法返回JavaScript中两个数组之间的差?
例如:
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"));
如果您不关心向后兼容性,那么更好的解决方案是使用过滤器。但是,此解决方案仍然有效。