Javascript 如何获取数组之间的差异并返回它们

Javascript 如何获取数组之间的差异并返回它们,javascript,arrays,Javascript,Arrays,我在练习面试技巧,我要解决这个问题: 编写一个处理两个整数数组的函数。 每个数组只有不同的数字,同一个数组中没有相同整数的重复,并且数组不排序。 找出哪些数字在数组1中,而不是数组2;哪些数字在数组2中,而不是数组1 我也在努力提高我的ES6+技能,因此我知道循环使用array.map是一种很好的方法,如果我想要得到我需要的差异,那么array.prototype.filter通过这种方式,我将得到一个数组,其中包含arr1中不在arr2中的所有元素,反之亦然 你问对称还是非对称 我要最快的 谢

我在练习面试技巧,我要解决这个问题:

编写一个处理两个整数数组的函数。 每个数组只有不同的数字,同一个数组中没有相同整数的重复,并且数组不排序。 找出哪些数字在数组1中,而不是数组2;哪些数字在数组2中,而不是数组1

我也在努力提高我的ES6+技能,因此我知道循环使用array.map是一种很好的方法,如果我想要得到我需要的差异,那么array.prototype.filter通过这种方式,我将得到一个数组,其中包含arr1中不在arr2中的所有元素,反之亦然

你问对称还是非对称

我要最快的


谢谢

下面是两种实现

第一种方法有利于可读性,适用于正常大小的阵列

在On*logn中,虽然对于较小的数组可以更快,并且可以线性地减少执行的指令数,但渐进速度不能超过第二种方法的复杂度

常数arr1=[1,2,9,8,6,7]; 常数arr2=[8,6,3,4,1,0]; //最易读 console.log //arr1无arr2 arr1.filterx=>arr2.indexOfx==-1, //arr1和arr2 arr1.filterx=>arr2.indexOfx=-1. //arr2不带arr1 arr2.filterx=>arr1.indexOfx==-1 ; //最快-在线 => { 常数计数= //串联开启 […arr1,…arr1,…arr2] //排序-onln 分类 //指望 .reduceac,cur=>{ acc[cur]=acc[cur]| | 0+1; 返回acc; }, {}; //分机 常数a1=[]; 常数a12=[]; 常数a2=[]; 因为我要数一数{ 开关计数[i]{ 案例1:a2.推+i;断开; 案例2:a1.推+i;断开; 案例3:a12.推+i;断开; } } console.log a1,//arr1不带arr2 a12,//arr1和arr2 a2//arr2不带arr1 ; };