数组去重的几种简单方法

今天学习一下数组去重的几种方法,虽然不全但是实用
方法一:

 <script>
       let arr=[1,2,3,5,4,8,8,4,8,8,2,2]
       function chuanru(arr){
           let newarr=[];
           for(var i=0;i<arr.length;i++){
               if(newarr.indexOf(arr[i])===-1){
                   newarr.push(arr[i]);
               }
           }
           return newarr;
       }
       console.log(chuanru(arr));
    </script>

使用了push与indexOf进行去重
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1
原理
在便利数组后,如果判断其没有相匹配的数值,则将其添加到新数组中
方法二:

 <script>
         let arr=[1,2,3,5,4,8,8,4,8,8,2,2]
         function chuanru(arr){
             return arr.filter((item,index)=>{
                 return arr.indexOf(item)===index
             })
         }
         console.log(chuanru(arr));
    </script>

使用了filter与indexOf去重
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
filter() 不会对空数组进行检测。
filter() 不会改变原始数组。
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1
原理
运用filter方法直接过滤掉重复的数值.,
方法三:

<script>
          let arr=[1,2,3,5,4,8,8,4,8,8,2,2]
          function chuanru(arr){
              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);
                          j--;
                      }                                                                                                                                                                                                                                                           
                  }
              }
              return arr
          }
          console.log(chuanru(arr));
    </script>

这是双层for循环加上splice去重
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
原理
在写第二层for循环时一定要带上,上一个参数加1,别写成了j=1。在下面判断时当arr[i]与arr[j]相等,则将arr数组中后面一个相同值删除掉,最终得到全部不一样值得数组。一定要记得j–,因为splice会改变数组长度。
方法四:

<script>
          let arr=[1,2,3,5,4,8,8,4,2,2]
          function chuanru(arr){
              let newarr=[]
              for(var i=0;i<arr.length;i++){
                  for(var j=i+1;j<arr.length;j++){
                      if(arr[i]===arr[j]){
                          i++;
                          j=i;
                      }
                  }
                  newarr.push(arr[i])
              }
              return newarr
          }
          console.log(chuanru(arr));
    </script>

这是使用双层for循环加上push进行去重
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
原理
这个方法其原理是在执行第二层for循环时,判断arr[i]与arr[j]的值如果arr[i]与arr[j]相等时就会跳过接下来的循环,重新执行第一层循环,除非判断其与后面的都不相等,才将其添加到新数组中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值