js中的数组去重的多种方法

数组去重有很多方法,下面列举几种方式

1. indexOf()方法

const arr = [1,2,3,4,5,1,2,3,4,6,1,1,6,6,7,5,8]

const newArr = []

arr.forEach(item => {

        if(newArr.indexOf( item ) === -1){

            newArr.push( item )

        }
})

2. set类型 - ES6最常用,代码最少

const arr = [1,2,3,4,5,1,2,3,4,6,1,1,6,6,7,5,8]

// 将 set 中的数据一个一个解构出来作为数组的数据单元

const newArr = [ ...new Set( arr ) ]

3. 双重for循环 - ES5最常用

const arr = [1,2,3,4,5,1,2,3,4,6,1,1,6,6,7,5,8]
for( let i = 0 ; i <= arr.length-1 ; i++ ){
    for( let j = i+1 ; j <= arr.length-1 ; j++ ){
        if( arr[i] === arr[j] ){
            arr.splice( j , 1)
            j--
        }
    }
}

4. sort排序之后删除 - 消除数组坍塌

const arr = [1,2,3,4,5,1,2,3,4,6,1,1,6,6,7,5,8]
arr.sort(function(a,b){return a-b})
for( let i = 0 ; i <= arr.length-2 ; i++ ){
    if( arr[i] === arr[i+1] ){
        arr.splice(i+1 , 1)
        // 防止数组坍塌
        i--
    }
}

5. 利用对象没有重复的属性 - 不太建议

const arr = [1,2,3,4,5,1,2,3,4,6,1,1,6,6,7,5,8]

const obj = {}
arr.forEach( item =>{
    obj[item] = 1
})

const newArr = []
for( let key in obj ){
    newArr.push(key)
}
console.log( newArr )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值