我们在实际工作中,或者在面试找工作时,都会用到或者被问到一个问题,那就是“数组如何去重”。
网上关于数组去重的方法有很多,我这人比较懒,一般知道了几个简单又快速的办法,就不想记那么复杂的了
Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法。
方法一:利用indexOf方法
方法二,总体思路是把数组元素逐个搬运到另一个数组,搬运的过程中检查这个元素是否有重复,如果有就直接丢掉。从嵌套循环就可以看出,这种方法效率极低。我们可以用一个hashtable的结构记录已有的元素,这样就可以避免内层循环。恰好,在Javascript中实现hashtable是极为简单的。
第二种是比较常规的方法
思路:
1.构建一个新的数组存放结果
2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比
3.若结果数组中没有该元素,则存到结果数组中
第三种方法比上面的方法效率要高
思路:
1.先将原数组进行排序
2.检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置
3.如果不相同,则将该元素存入结果数组中
思路:
1.创建一个新的数组存放结果
2.创建一个空对象
3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。
一个人的努力是加法效应,一个群体的努力则是乘法效应。如果在学习的道路上你孤立无援,可以加入我们的web前端学习群:675498134,群里有海量资料,每天都有技术大牛分享最前沿的前端案例,大家一起学习一起进步。
注意:本文归作者所有,未经作者允许,不得转载