数组去重

let arr = [1,1,"1","1",true,true,"true",{},{},"{}",null,null,undefined,undefined]

1.

// 方法1
let uniqueOne = Array.from(new Set(arr))  //Array.from()   类数组转数组
let uniqueOne = [...new Set(arr)]   //解构赋值
console.log(uniqueOne) // [1, '1', true, 'true', {…}, {…}, '{}', null, undefined]

2.

// 方法2
let uniqueTwo = arr => {

    let map = new Map(); 

    //或者用空对象 let obj = {} 利用对象属性不能重复得特性

    let brr = []

    arr.forEach( item => {

        if(!map.has(item)) { //如果是对象得话就判断 !obj[item]

            map.set(item,true) //如果是对象得话就obj[item] =true 其他一样
            brr.push(item)

        }

    })

    return brr
}

console.log(uniqueTwo(arr))

3.

//方法3
let uniqueThree = arr => {

    let brr = []

    arr.forEach(item => {

        // 使用indexOf 返回数组是否包含某个值 没有就返回-1 有就返回下标
        if(brr.indexOf(item) === -1) 

        brr.push(item)
    
        // 或者使用includes 返回数组是否包含某个值 没有就返回false 有就返回true

        if(!brr.includes(item))

         brr.push(item)

    })

    return brr
}
console.log(uniqueThree(arr))  

4.

// 方法2
let uniqueTwo = arr => {

    let map = new Map(); //或者用空对象 let obj = {} 利用对象属性不能重复得特性

    let brr = []

    arr.forEach( item => {

        if(!map.has(item)) { //如果是对象得话就判断 !obj[item]

            map.set(item,true) //如果是对象得话就obj[item] =true 其他一样
            brr.push(item)

        }
    })

    return brr

}

console.log(uniqueTwo(arr))

 

posted @ 2022-04-15 15:08  小成-  阅读(21)  评论(0)    收藏  举报