数组去重

本文详细介绍了五种使用JavaScript实现数组去重的方法,包括传统for循环对比、indexOf、includes、filter结合includes以及利用ES6 Set特性。每种方法都有其适用场景和优缺点,适合不同需求的开发者。

方法一:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中

 

var arr =[1,2,1,4,3,2,4,4,3,6,7,8,4,9,5]
    function unique(){
        var arrNew=[arr[0]]
        for(var i=0;i<arr.length;i++){
            var flag = false
            for(var j=0;j<arrNew.length;j++){
                if(arr[i]===arrNew[j]){
                    flag = true
                    break
                }
            }
            if(!flag) {
                arrNew.push(arr[i])
            }
        }
        return arrNew
    }
    console.log(unique(arr));

方法二:index of (这里有个弊端 那就是 NAN indexof 是全等=== 所以NAN 不能去重)

 

var arr =[1,2,1,4,3,2,4,4,3,6,7,8,4,9,5]
function unique(arr) {
            
            var newArr=[]
            for (let i = 0; i < arr.length; i++) {
                if(newArr.indexOf(arr[i])===-1){
                    newArr.push(arr[i])
                }
            }
            return newArr
        }
 console.log(unique(arr));

方法三: includes

 

function unique(arr) {
            
            var newArr=[]
            for (let i = 0; i < arr.length; i++) {
                if(!newArr.includes(arr[i])){
                    newArr.push(arr[i])
                }
            }
            return newArr
        }
        console.log(unique([1,2,1,4,3,2,4,4,3,6,7,8,4,9,5]));

方法四:includes 和 filter

 

function unique(arr) {
            
            var newArr=[]
            newArr=arr.filter(item=>{
                return newArr.includes(item) ? '':newArr.push(item)
            })
            return newArr
        }
        console.log(unique([1,2,1,4,3,2,4,4,3,6,7,8,4,9,5]));

    </script>

方法五:es6 中的 [...new Set(arr)] (最喜欢这个)

 

var arr =[1,2,1,4,3,2,4,4,3,6,7,8,4,9,5]
    console.log([...new Set(arr)]);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值