JavaScript——手写数组去重

111 阅读1分钟

前言

image.png 在项目开发中,经常会遇到数组去重的问题,针对这个问题,普遍有两种解决办法,一种使用Array.from(Set(...array)),另一种是手写数组去重。

使用Array.from()和Set()

因为Set()数据的存储结构原因,同一个元素不可以出现两次,所以将数组的每一个元素传入Set()中,达到去重的效果,然后再用Array.from将Set()结构转化为数组结构。

手写数组去重方法

全部代码如下:

var unique =(a)=>{
    const map=new map()
    for(let i=0;i<a.length;i++){
        let number=a[i]
        if(map.has(number)){
            continue
        }
        if(number===undefined){
            continue
        }
        map.set(number,true)
    }
    
    return [...map.keys()]
}

首先unique()函数接收一个数组,在函数体内,声明一个名为map对象,然后使用for循环遍历数组,在每一次的for循环中,将每一个元素使用number变量去保存,如果这个变量存在于map中,结束本次循环,进入下一次循环,并且如果本次的number等于undefined时,也结束本次循环,如果不存在,则将本次的元素存入map中,并将元素的值作为key,value为true,直至循环结束后,return出去重后的数组。