使用es6的Set
let arr=[1,5,1,8,22,33,22,45]
arr=[...new Set(arr)]
取一个与后面进行比较,如有重复删除当前项
let arr=[1,5,1,8,22,33,22,45]
for(let i=0;i<arr.length-1;i++){
let current=arr[i]
let newarr=arr.slice(i+1)
if(newarr.includes(current)){
arr[i]=arr[arr.length-1]
arr.length--
i--
}
}
这里有一个删除比较好的方法,如果直接删除数组中的元素,会造成后面的元素前移 索引也会随之变化,这样如果数组过长,删除元素靠前是非常消耗效率的,所以一般使用null占位删除元素,或者这种去重情况下把数组的最后一个元素拿来 减小arr.length,并且i--继续操作当前的这个元素
存储值
let arr=[1,5,1,8,22,33,22,45]
let obj={}
for(let i;i<arr.length;i++){
let current=arr[i]
if(!obj[current]){
obj[current]=current
}else{
arr[i]=arr[arr.length-1]
arr.length--
i--
}
}
利用正则
let arr=[1,5,1,8,22,33,22,45]
arr=arr.sort((a,b)=>a-b)
let str=arr.join("@")
str+="@"
str.replace(/(\d+@)\1*/g,(hug,demo)=>{
return demo
})
arr=str.substring(0,str.length-1).split("@")