基础类型数组去重常用方法

158 阅读1分钟

前言

因为数组能够存储任意的数据类型,所以本文的数组去重方法主要针对非引用类型数据。

set去重

通过将数组作为参数传入新创建的set对象之中,利用set对象的唯一性,完成去重之后,通过使用Array.from()方法或者是扩展运算符将set对象转化为数组类型

let arr=[10,2,3,6,4,10,4,6]
let set = new Set(arr)
//Array.from()
let newArrOne=Array.from(set)
//扩展运算符
let newArrTwo= [...set]

Map去重

通过Map来记录当前数据是否出现,结合reduce遍历当前对象完成操作。同时如果想要将对象等引用类型进行操作的话,可以通过toString()方法将对应的对象类型数据转化为字符串,然后判断当前字符串是否相等,是否为重复值。

let arr2 = [{'name':11},1,2,{'name':11},41,41,41,12]
let newArrc =[]
let falg = true
let a = ''
arr2.reduce((pre, next) => {
    if(typeof next == 'object') {
        a = next.toString()
        falg = false
    }
    if (!pre.get(next) && falg) {
        pre.set(next, 1)
        newArrc.push(next)
    }
    if(!pre.get(a) && !falg) {
        pre.set(a,1)
        newArrc.push(next)
    }
    falg = true
    return pre
}, new Map())

for循环去重

通过引入一个判断数组res,遍历当前被去重数组,将每个值依次传入res之中,同时判断传入值是否已经存在了,如果存在则忽略,遍历完成之后则完成了去重需求。

let res = []
for(let i=0;i<arr.length;i++) {
    if(!res.includes(arr[i])) {
        res.push(arr[i])
    }
}
console.log(res)