FE程序员

js数组去重的几种方法。

2016-01-05  本文已影响1854人  臭臭臭魁

在项目中偶尔会用到数组,通过原生js去除数组的重复项。简单的记下几种方法,亲测可用。。

第一种方法:

var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9];  
   function unArray (Arr) {            
       var newArr = [];        
       for (var i = 0; i < Arr.length; i++) {            
           if (newArr.indexOf(Arr[i]) == -1){//检测newArr数组里是否包含Arr数组的内容,==-1检索的字符串没有出现则为-1       
                newArr.push(Arr[i])//把Arr数组的第i项插入新数组           
            }          
        };            
       return newArr;        
     }    
 unArray(Arr);
  //console.log(unArray(Arr));

第一种方法是检测新数组newArr里有没有包含Arr里的i项,如果没有则向newArr里添加Aii[i]项,如果有则跳过;不做任何操作。

第二种方法:

var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9];
function unArray (Arr) {  
  var newArr = [Arr[0]]; 
   for (var i = 0; i < Arr.length; i++) {   
       if (Arr.indexOf(Arr[i]) == i){//检测Arr数组第一次出现的位置是i        
          newArr.push(Arr[i])//把Arr数组的第i项插入新数组newArr 
        }   
   };   
   return newArr;//返回新数组newArr
  }
unArray(Arr);
//console.log(unArray(Arr));

第二种方法是在Arr数组里检测,Arr.indexOf(Arr[i])返回某一项在Arr数组里第一次出现的位置,如果第一次出现就push到newArr数组去,如果第二次出现,则什么都不操作。

第三种方法:

var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9];
function unArray (Arr) {  
  var newArr = [],hash = {};//hash位hash表 
   for (var i = 0; i < Arr.length; i++) {      
      if (!hash[Arr[i]]){//如果hash表里没有第i项则         
         hash[Arr[i]] = true;//把第i项插入到hash表里       
         newArr.push(Arr[i])//把Arr数组的第i项插入新数组。此方法的时间消耗长,内存消耗大;    
      }   
   };    
    return newArr;
}
unArray(Arr);

//console.log(unArray(Arr));
第三种是关于hash表的,不太熟悉hash表,所以用到的很少啊。。

第四种方法

var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9];
 function unArray (Arr) {
  Arr.sort();//先排序
  var newArr = [Arr[0]],firstArr = Arr[0];//创建一个新数组和一个变量firstArr,并赋值为数组Arr的第一个值
    for (var i = 0; i < Arr.length; i++) {
       if (Arr[i] !== firstArr){//如果数组的第i个不等于firstArr;
           newArr.push(Arr[i]);//把第Arr[i]项插入新数组newArr  
           firstArr = Arr[i];//重新设置变量firstArr为rr[i],也就是刚插入newArr的那一项
      }
    };
    return newArr;//返回新数组newArr
  }
 unArray(Arr);
// console.log(unArray(Arr));

此方法还的谢谢二楼。

目前只会这几种方法啊,等以后学到更多的再补充,高手看到不足的地方,欢迎评论。。
上一篇 下一篇

猜你喜欢

热点阅读