1、遍历数组法
var arr = [1,2,3,1,2,3]
function unique(){
var result = []
for(var i = 0;i<arr.length;i++){
if(result.indexOf(arr[i])===-1){
result.push(arr[i])
}
}
return result
}
新建空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。
2、使用map
var arr = [1,2,3,1,2,3,"a","a","b"]
function unique(){
let map = new Map()
let result = [] // 也可以 = new Array()
for(let i=0;i<arr.length;i++){
if(map.has(arr[i])){ // 判断map中是否有该key
map.set(arr[i],true) // true 代表该 key 值在原始数组中重复
}else{
map.set(arr[i],false)
result.push(arr[i])
}
}
return result
}
创建一个空map数据结构,判断map中是否已有该key,如果没有该key,就加入result中。
缺点:API 太新,旧浏览器不支持。
3、使用set
let arr=[1,2,3,1,2,3,"a","a","b"]
console.log([...new Set(arr)])
利用ES6 Set去重。
缺点:API 太新,旧浏览器不支持。