数组去重的方法(暂时了解的)

1、利用ES6中set去重

let arr=[1,1,2,3,4,4,5]
arr=[...new Set(arr)]
console.log(arr)

2、利用两个for循环嵌套,然后splice去重(ES5中最常用)
先定义一个包含原始数组第一个元素的数组,然后遍历原始数组,将原始数组中的每个元素与新数组中的每个元素进行比对,
如果不重复则添加到新数组中,最后返回新数组;因为它的时间复杂度是O(n^2),如果数组长度很大,那么将会非常耗费内存



3、利用indexOf去重1  数组内是否有该元素,有返回1,没有返回-1
数组的indexOf()方法可返回某个指定的元素在数组中首次出现的位置。该方法首先定义一个空数组res,
然后调用indexOf方法对原来的数组进行遍历判断,如果元素不在res中,则将其push进res中,
最后将res返回即可获得去重的数组

新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。

利用indexOf去重2
利用indexOf检测元素在数组中第一次出现的位置是否和元素现在的位置相等,如果不等则说明该元素是重复元素


4、利用sort  利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对。
这种方法首先调用了数组的排序方法sort(),
然后根据排序后的结果进行遍历及相邻元素比对,如果相等则跳过改元素,直到遍历结束

5、利用includes   检测数组是否有某个值

6、利用filter 过滤器 

7、利用递归去重  

8、利用map

9、reduce+includes

10、利用对象属性去重

创建空对象,遍历数组,将数组中的值设为对象的属性,并给该属性赋初始值1,每出现一次,对应的属性值增加1,
这样,属性值对应的就是该元素出现的次数了

11  Array.from与set去重

 

posted @ 2019-08-09 09:41  zZindex  阅读(183)  评论(0编辑  收藏  举报