Js中去除數組中重復元素的6種方法


方法一:

     Array.prototype.method1 = function(){  
            var arr=[];    //定義一個臨時數組  
            for(var i = 0; i < this.length; i++){    //循環遍歷當前數組  
                //判斷當前數組下標為i的元素是否已經保存到臨時數組  
                //如果已保存,則跳過,否則將此元素保存到臨時數組中  
                if(arr.indexOf(this[i]) == -1){  
                    arr.push(this[i]);  
                }  
            }  
            return arr;  
        } 

方法二:

        
        Array.prototype.method2 = function(){  
            var h={};    //定義一個hash表  
            var arr=[];  //定義一個臨時數組  
              
            for(var i = 0; i < this.length; i++){    //循環遍歷當前數組  
                //對元素進行判斷,看是否已經存在表中,如果存在則跳過,否則存入臨時數組  
                if(!h[this[i]]){  
                    //存入hash表  
                    h[this[i]] = true;  
                    //把當前數組元素存入到臨時數組中  
                    arr.push(this[i]);  
                }  
            }  
            return arr;  
        }  

方法三:

  Array.prototype.method3 = function(){  
            //直接定義結果數組  
            var arr=[] ;
            for(var i = 1; i < this.length; i++){    //從數組第二項開始循環遍歷此數組  
                //對元素進行判斷:  
                //如果數組當前元素在此數組中第一次出現的位置不是i  
                //那么我們可以判斷第i項元素是重復的,否則直接存入結果數組  
                if(this.indexOf(this[i]) == i){  
                    arr.push(this[i]);  
                }  
            }  
            return arr;  
          
        }  

方法四:

   Array.prototype.method4 = function(){  
            //將數組進行排序  
            this.sort();  
            //定義結果數組  
            var arr=[];  
            for(var i = 1; i < this.length; i++){    //從數組第二項開始循環遍歷數組  
                //判斷相鄰兩個元素是否相等,如果相等說明數據重復,否則將元素寫入結果數組  
                if(this[i] !== arr[arr.length - 1]){  
                    arr.push(this[i]);  
                }              
            }  
            return arr;  
              
        }  

ext:

  1.  var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];  
  2.         alert(arr.method3());  

方法五:

const set=new Set([1,2,3,4,4]);
console.log([...set]);//[1,2,3,4]; 
//[...set]是一個擴展運算符,將一個數組轉為用逗號分隔的參數列表。

方法六:

function dedupe(array){
    return Array.from(new Set(array));
    //這里的 Array.from()方法是將兩類對象轉為真正的數組:類似數組的對象和可遍歷的對象(包括es6新增的數據結構Set和Map)
    }

 dedupe([1,1,1,2,3]) //[1,2,3]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM