数组去重方法

<!DOCTYPE html>
<html lang="en">


<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>


<body>


</body>
<script>
    var arr = [1, 2, 2, 2, 3, 4, 5, 2, 3, 2, 2, 5, 6, 7, 65, 4, 3]
    var arr2 = []
    方法一:遍历数组    indexOf() 找位置 返回索引值 没有找到返回 -1,第一次出现位置
    for(var i=0;i<arr.length;i++){
        if(arr2.indexOf(arr[i]) == -1){
            arr2.push(arr[i])
        }
    }
    console.log(arr2);
    document.write(arr2);


    方法二:纯遍历
    function noRepeat(arr1) {
        for (var i = 0; i < arr1.length; i++) {
    var flag = true //定义一个布尔类型,true表示没有重复的
            for (var j = 0; j < arr2.length; j++) {
                if (arr1[i] == arr2[j]) {
                    // console.log("重复");
                    flag = false;
                }
            }
            if (flag) {
                arr2.push(arr1[i])
            }
        }
        return arr2
    }
    var arr1=[1,2,3,4,2,22,3,43,5,2,3,4,2,6,7,45,5]
    console.log(noRepeat(arr1));
    var arr3=noRepeat(arr1).sort(function(a,b){     //按升序排序
        return a-b;
    })
    console.log(arr3);


    方法三: 利用for in
    先遍历,把数组的每一项当做对象的属性名
    取出所有的属性名,加到新的数组里 利用for in
    var arr3 ={}
    for(var i=0;i<arr.length;i++){
        arr3[arr[i]]=''
    }
    console.log(arr3);
    for(var key in arr3){
        arr2.push(key)
    }
    console.log(arr2);


    方法四:利用filter
    arr.filter(function(item,index){
        if(arr2.indexOf(item)==-1){
            arr2.push(item)
        }
        return
    })


    console.log(arr2);


    //方法五:利用foreach调出数组的每个元素,判断arr2中是否有该元素,无则加进去、
    arr.forEach(function(item,index){
        if(arr2.indexOf(item)==-1){
            arr2.push(item)
        }
        return 
    })


    console.log(arr2);


</script>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值