1. 程式人生 > >javaScript 去除數組中的重復值

javaScript 去除數組中的重復值

強制 each 結果 div blog 會有 我們 腳本 -1

javaScript 去除數組中的重復值

//js 數組去除重復的方法:ps:forEach是ECMA5中Array新方法中最基本的一個,就是遍歷

Array.prototype.unique=function (){
      var result=[];
      this.forEach(function (val){
            if (result.indexOf(val)<0){
                  result.push(val);
            }
      })
      return result;
}

//利用hash表去除重負的方法;這是一種利用空間換區時間的方法;
Array.prototype.uniqueFn=function (){ var result=[]; var hash={}; this.forEach(function (val){ if (!hash[val]){ hash[v]=true; //下次再遇到這個值,也無法進入循環體; result.push(v); } }) result; } //因為JavaScript 是弱類型的腳本語言,所有數組中沒有數據類型的判斷;
//對於下面的數組可能會有誤; // 1,2,’1’,’2’,3],去重結果為[1,2,3],原因在於對象對屬性索引時會進行強制類型轉換,arr[‘1’]和arr[1]得到的都是arr[1]的值,因此需做一些改變 // arr[x] 會自動的將我們的x轉成字符串類型的呀; Array.prototype.unique=function (){ var result=[]; var hash={}; this.forEach(function (val){ var type=typeof(val); hash[val] || (hash[val]=new
Array()); if(hash[val].indexOf(type)<0){ //對應的可以下是否又該類型的值; hash[val].push(type); //存值對應的數據類型; result.push(val); //存值 } }) }

還有一種方法,有點繞;不過還挺不錯滴呀;

先排序後去重

Array.prototype.unique=function(){
      var result=[this[0]]; //取出頭一個數據;
      this.sort();  //排序後,有重復的數據會拍再一起
      this.forEach(function (val){
            val!=result[result.length-1] && result.push(val);
      })
}

javaScript 去除數組中的重復值