js數組去重的幾種方法。

在項目中偶爾會用到數組,通過原生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));

此方法還的謝謝二樓。

目前只會這幾種方法啊,等以后學到更多的再補充,高手看到不足的地方,歡迎評論。。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容