如何实现数组去重(个人常用的三种)

309 阅读1分钟

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 太新,旧浏览器不支持。