日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1、利用 indexOf() 方法之一

Array.prototype.unique = function(){
 var temp = [];
 for (var i = 0;i < this.length;i++){
 // 如果當前數組的第 i 項已經保存到了臨時數組,那么跳過
 if(temp.indexOf( this[i] ) == -1){
 temp.push( this[i] );
 }
 }
 return temp;
}

2、利用 indexOf() 方法之二

Array.prototype.unique = function(){
 var temp = [ this[0] ];
 for (var i = 1;i < this.length;i++){
 // 如果當前數組元素在數組中第一次出現的位置不是i,說明是重復元素
 if(this.indexOf( this[i] ) == i){
 temp.push( this[i] );
 }
 }
 return temp;
}

3、優化遍歷數組法

Array.prototype.unique = function(){
 var hash=[];
 // 雙層循環,外循環表示從 0 到 arr.length
 for (var i = 0; i < this.length; i++) {
 // 內循環表示從 i+1 到 arr.length
 for (var j = i+1; j < this.length; j++) {
 if(this[i]===this[j]){
 // 檢測到有重復值時終止當前循環同時進入外層循環的下一輪判斷
 ++i;
 }
 }
 // 將沒重復的右邊值放入新數組
 hash.push(this[i]);
 }
 return hash;
}

4、排序后再進行數組去重

Array.prototype.unique = function(){
 this.sort(function( a,b ){ return a-b; });
 var temp = [ this[0] ];
 for (var i = 0;i < this.length;i++){
 if( this[i] != this[i-1]){
 temp.push( this[i] );
 }
 }
 return temp;
}

5、利用數組 filter 方法過濾

Array.prototype.unique = function unique() {
 var res = this.filter(function(item, index, array) {
 return array.indexOf(item) === index;
 });
 
 return res;
}

6、利用對象屬性的唯一性

Array.prototype.unique = function(){
 var temp = [],hash = {}; // hash 作為哈希表
 for (var i = 0;i < this.length;i++){
 if(!hash[ this[i] ]){ // 如果哈希表中沒有當前項
 hash[ this[i] ] = true;
 temp.push(this[i])
 }
 }
 return temp;
}

7、利用 ES6 set 數據結構

Array.prototype.unique = function(){
 return Array.from(new Set(this));
}

上述七種方法中,經測試(測試數組元素個數從 1 萬個- 1000 萬個),代碼運行速度從上到下依次降低,其中方法 1 和方法 2 速度差異不大,速度最慢,方法 3 的具體運行速度和數組具體情況相關,方法 4 速度比方法 1,2,3 快,但比方法 5,6,7 慢得比較多,方法 5,6,7 運行速度最快,且運行速度差異不大,不過鑒于 set 是 ES6 新加內容,在實際開發環境中,推薦使用穩定性和速度都比較不錯的方法 5 和方法 6 。

拓展:若重復,則去掉該元素

function unique(arr){
 var hash=[];
 for (var i = 0; i < arr.length; i++) {
 if(arr.indexOf(arr[i])==arr.lastIndexOf(arr[i])){
 hash.push(arr[i]);
 }
 }
 return hash;
}

分享到:
標簽:數組 JS
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定