一、方法一:数组拼接
可以利用concat
函数对两个数组进行拼接一个数组,再用filter
函数过滤数组并将差异返回成一个新的数组。再对新数组判定就能知道两个数组是否有差异了,下面先简单的介绍这两个函数使用方法;
1.concat()函数
语法
array1.concat(array2, array3,…, arrayX)
参数
参数 | 描述 |
array2, array3,…, arrayX | 必需。需要连接的数组。 |
返回值
类型 | 描述 |
Array 对象 | 返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。 如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。 |
2.filter()函数
语法
array.filter(function(currentValue,index,arr), thisValue)
参数
参数 | 描述 |
currentValue | 必须的,表示当前元素的值 |
index | 可选参数,当前元素的索引值 |
arr | 可选参数,当前元素属于的数组对象 |
thisValue | 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。 如果省略了 thisValue ,“this” 的值为 “undefined” |
3.使用方式
- 差异比较方法:
getArrDifference: function(arr1, arr2){ return arr1.concat(arr2).filter(function(value, i, arr){ return arr.indexOf(value) === arr.lastIndexOf(value); }) }
- 演示示例:
可以根据不同的需要来对filter
函数进行处理,由于这里只能识别出两个数组有差异即可,就没有做过多的处理; 注意:filter()不会对空数组进行检测、不会改变原始数组。
var list1 = ["Engineer1", "Engineer2", "Engineer3", "Engineer4", "Engineer5"]; var list2 = ["Engineer1", "Engineer2", "Engineer1", "Engineer5"]; var list3 = ["Engineer1", "Engineer3", "Engineer5"]; var list4 = ["Engineer1", "Engineer4", "Engineer5"]; console.log(that.getArrDifference(list1,list2)); console.log(that.getArrDifference(list3, list4));
- 运行结果:
二、方法二:数组转字符串
相比第一种方法,第二种比较简单点,只要用toString()
函数将需要比较的数组转换成字符串,再对比即可;
- 差异比较方法:
getArrDifference: function(arr1, arr2){ return arr1.toString() != arr2.toString(); },
- 演示示例:
当两个字符串不相同时,则返回true进行处理即可;
var list1 = ["Engineer1", "Engineer2", "Engineer3", "Engineer4", "Engineer5"]; var list2 = ["Engineer1", "Engineer2", "Engineer1", "Engineer5"]; var list3 = ["Engineer1", "Engineer3", "Engineer5"]; var list4 = ["Engineer1", "Engineer4", "Engineer5"]; console.log(that.getArrDifference(list1,list2)); console.log(that.getArrDifference(list3, list4));
- 运行结果:
总结
感谢观看,如果有帮助到你,请给文章点个赞和收藏,让更多的人看到。🌹 🌹 🌹
也欢迎你,关注我。👍 👍 👍
原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!