方法一:ES6
let a=[1,2,3,5,4],b=[4,7,2,3,0];
// “...”是ES6中的扩展运算符,c表示将数组a和b合并,带有重复数据
c = [...a,...b];
// set是ES6提供的一中数据结构,这里主要用到是它不包含重复元素的特点,这样转化成了一个没有重复元素的数据结构,[1,2,3,5,4,7,0]
d = new Set(c);
// 把d的这种类数组数据结构转化为数组,数组中包含的仍是两个数组的并集
e = Array.from(d);
// 筛选除了e中不包含a的元素,再加上e中不包含b的元素,重新组成一个数组
f = [...e.filter(_ => !a.includes(_)),...e.filter(_ => !b.includes(_))];
console.log(f);
// 运行结果:[7,0,1,5]
方法二:支持IE8
function diff(arr1,arr2){
var a = [];
var b = [];
// 将数组值作为新数组下标
for(var i=0;i<arr2.length;i++){
a[arr2[i]]=true;
}
for(var i=0;i<arr1.length;i++){
if(!a[arr1[i]]){
b.push(arr1[i]);
}
}
console.log(b)
}
let aa = ["a","b"],bb=["a"];
diff(aa,bb); //"b"