数组去重的几种方法
1、Array.prototype.sort():相邻元素去重
相邻元素去重的核心在于Array.sort()
能够对数组进行排序。这样相等的数组就会在相邻的位置,通过比较相邻的元素就可以起到去重的作用
let c=[1,2,3,4,5,6,1,2,3]
function
newArr(arr){
let Arr=arr.sort()
let b=[]
for
(let i=0;i<Arr.length;i++){
if
(Arr[i]!==Arr[i+1]){
b.push(Arr[i])
}
}
return
b
}
2、遍历去重:indexOf
indexOf 方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1。首先我们新建一个空数组(arry),如果:
arry.indexOf
(数组元素)===-1,那么我们就可以知道arry中不存在元素。let c=[1,2,3,4,5,6,1,2,3]
function
newArr(arr){
let b=[]
for
(let i=0;i<arr.length;i++){
if
(b.indexOf(arr[i])==-1){
b.push(arr[i])
}
}
return
b
}
3、循环遍历之:map()/forEach()
map()和forEach()都可以实现遍历数组。所以以上的方法都可以用map()、forEach()改写。下面我只简单的改写一个,其他的改写方式参照即可。
let c=[1,2,3,4,5,6,1,2,3]
function
newArr(arr){
let b=[]
arr.forEach(res=>{
if
(b.indexOf(res)==-1){
b.push(res)
}
})
return
b
}
4、ES6:Set数据结构
Set数据类似于数组,但是成员的值都是唯一的,没有重复的值。它可以接收一个数组,类于:
let a=[1,2,3,1,2] Set(a)=>1,2,3
所以可以使用Set()实现去重。let c=[1,2,3,4,5,6,1,2,3]
function
newArr(arr){
let b=
new
Set(arr)
let c=Array.from(b)
return
c
}