JavaScript关于数组去重的几种方式;

数组去重方法
本文介绍了三种JavaScript数组去重的方法:双层循环比较删除重复项、新建数组存储非重复项及利用数组长度特性判断并存储非重复项。
      数组去重;
//方法一:
       var arr = [5, 2, 2, 4, 3, 3, 2, 4, 1];

       for(var i = 0; i < arr.length; i++){ // 遍历数组中的每一项

           for(var j = i+1; j < arr.length; j++){ //   相邻的两个数进行比较,

              if(arr[i] == arr[j]){        
              arr.splice(j,1); // 判断如果有重复的值; 用数组splice方法删除 后面的那个相同的数;

                    j--; //注意这里的 j--, 因为删掉一个数后,数组的长度也会减少1;
                }
            } // 这个方法类似于前面讲到的冒泡,规律差不多的;
        }

        alert(arr);


//方法二:
       var arr = [1, 2, 3, 4, 1, 2, 3, 2, 1, 4, 3, 2, 3, 4, 1, 2];
    
    //1 声明一个结果数组
    var resultArr = [arr[0]],     // 申明一个新数组,用来存不重复的值;
      flag;
    
   //2 遍历arr,取出arr中的每个元素,到resultArr中进行依次比較
    for (var i = 1; i < arr.length; i++) {
      flag = true; //假设当前这个arr[i]可以放入到resultArr中
      
      //3 遍历resultArr:验证
      for (var j = 0; j < resultArr.length; j++) {
        //需要保证任意一个都不等,才可以放入
        if (arr[i] == resultArr[j]) {
          flag = false;
          //提高效率
          break;
        }
      }
      
      if (flag == true) {
        resultArr[resultArr.length] = arr[i];
      }
      
    }
    console.log(resultArr);


//方法三: //  与第二方式差不多,只不过这个方法是用循环完了里值会等于数组的长度的特性来判断的;
        var arr = [5, 0, 0, 4, 0, 3, 2, 0, 1];
        var newArr = [arr[0]];       //申明一个新数组;


       for(var i = 1;  i < arr.length; i++){


           for(var j = 0; j < newArr.length; j++){


                if(arr[i] == arr[j]){
                    break; // 如果老数组中有任意一个个与新数组中的元素相等,则跳出循环;j就不会等于newArr.length了;
                }
            }


            if(j == newArr.length){ // 这里如果判断 j 如果等于newArr.length; 说明没有进入上面的那个if判断,说明没有重复的值,


                newArr[newArr.length] = arr[i]; // 利用length属性,讲不重复的值放入新新数组中;
            }
       }


//        alert(newArr);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值