javaScript 去除數組中的重復值
阿新 • • 發佈:2017-06-03
強制 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]=newArray()); 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 去除數組中的重復值