数组去重

方法一   set 数组去重
定义一个函数 实现数组去重   返回去重后的数组
     function norepeat( arr ){
            var set = new Set( arr );
            return Array.from( set );(返回去重后的数组)
            return Array.from( new Set(arr) );
            return [...new Set(arr)]; (最短的去重办法)
   }
      }Set(arr)];
   }
 
方法二
思路:先将数组按照一定的顺序排好(升序或降序), 用数组相邻的两个数做比较,如果相邻的两个数不相等,就将前一个数存入到新数组中
     编写函数has(arr , num) 判断数组中是否存在num这个元素,返回布尔类型
function has(arr,num){   
          for( var i = 0 ; i < arr.length ; i++ ){
              if( arr[i] == num ){
                   return true; // 有
              }
          }
          return false;//没有
     } 
function norepeat2( arr ){
            //先将数组进行排序
            arr.sort( function(a,b){
                  return a-b>0;
            } )
            var newarr = [];//存储去重后的数据
            //遍历原数组 比较相邻的两个数
            for( var i = 0 ; i < arr.length ; i++ ){
                  if( arr[i] != arr[i+1] ){
                        newarr.push( arr[i] );
                  }
            }
            return newarr;
      }
      
      var res = norepeat2( [34,2,34,2,45,67,45,67,56,2] );
      alert( res );
 
方法三
思路:定义一个空数组 , 遍历原数组,判断原数组中的每一个数在空数组中是否存在,如果不存在 ,就将这个数 存入到 空数组中  
     编写函数has(arr , num) 判断数组中是否存在num这个元素,返回布尔类型
function has(arr,num){   
          for( var i = 0 ; i < arr.length ; i++ ){
              if( arr[i] == num ){
                   return true; // 有
              }
          }
          return false;//没有
     }   
 function norepeat( arr ){ //arr就是要去重的数组 (原数组)
            var newarr = [];//空数组 用来存储去重后的数据
            for( var i = 0 ; i <arr.length ; i++ ){
                  //var res =  has( newarr,arr[i] );
                  if( !has( newarr,arr[i] ) ){ //不存在
                        newarr.push( arr[i] );
                  }
            }
            return newarr;
      }
var res = norepeat2( [34,2,34,2,45,67,45,67,56,2] );
     alert( res );

转载于:https://www.cnblogs.com/tis100204/p/10297527.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值