JS陣列去重的幾種常見方法

2021-09-26 02:52:58 字數 2536 閱讀 2603

一、基礎的去重方法

// 最簡單陣列去重法

/** 新建一新陣列,遍歷傳入陣列,值不在新陣列就push進該新陣列中

* ie8以下不支援陣列的indexof方法 */

function

uniq

(array)

}return temp;

}var arr =[1

,2,"2",4

,9,"a"

,"a",2

,3,5

,6,5

];console.

log(

uniq

(arr)

);

二、陣列下標判斷法

/* 

* 呼叫indexof方法,效能和方法1差不多

* 實現思路:如果當前陣列的第 i 項在當前陣列中第一次出現的位置不是 i,那麼表示第 i 項是重複的,忽略掉。否則存入結果陣列 */

function

uniq

(array)

}return temp;

}var arr =[1

,2,"2",4

,9,"a"

,"a",2

,3,5

,6,5

];console.

log(

uniq

(arr)

);

三、排序後相鄰去除法

/*

* 給傳入陣列排序,排序後相同值相鄰,

* 然後遍歷時,新陣列只加入不與前一值重複的值。

* 會打亂原來陣列的順序 */

function

uniq

(array)

}return temp;

}var arr =[1

,2,"2",4

,9,"a"

,"a",2

,3,5

,6,5

];console.

log(

uniq

(arr)

);

四、物件鍵值法去重

/*

* 速度最快, 佔空間最多(空間換時間)

* 該方法執行的速度比其他任何方法都快, 就是占用的記憶體大一些。

* 現思路:新建一js物件以及新陣列,遍歷傳入陣列時,判斷值是否為js物件的鍵,

* 不是的話給物件新增該鍵並放入新陣列。

* 注意點:判斷是否為js物件鍵時,會自動對傳入的鍵執行「tostring()」,

* 不同的鍵可能會被誤認為一樣,例如n[val]為n[1]、n["1"];

* 解決上述問題還是得呼叫「indexof」 */

function

uniq

(array)

, r =

, len = array.length, val, type;

for(

var i =

0; i < len; i++

)else

if(temp[val]

.indexof

(type)

<0)

}return r;

}var arr =[1

,2,"2",4

,9,"a"

,"a",2

,3,5

,6,5

];console.

log(

uniq

(arr)

);

五、優化遍歷陣列法(推薦)

/*

* 實現思路:雙層迴圈,外迴圈表示從0到arr.length,內迴圈表示從i+1到arr.length

* 將沒重複的右邊值放入新陣列。(檢測到有重複值時終止當前迴圈同時進入外層迴圈的下一輪判斷)*/

function

uniq

(array)

} temp.

push

(array[i]);

}return temp;

}var arr =[1

,2,"2",4

,9,"a"

,"a",2

,3,5

,6,5

];console.

log(

uniq

(arr)

);

六、es6實現

/*

* 基本思路:es6提供了新的資料結構set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。

* set函式可以接受乙個陣列(或類似陣列的物件)作為引數,用來初始化 */

function

uniq

(array)

var arr =[1

,2,"2",4

,9,"a"

,"a",2

,3,5

,6,5

];console.

log(

uniq

(arr)

);

JS陣列去重的幾種常見方法

js陣列去重的幾種常見方法 一 簡單的去重方法 最簡單陣列去重法 新建一新陣列,遍歷傳入陣列,值不在新陣列就push進該新陣列中 ie8以下不支援陣列的indexof方法 function uniq array return temp var aa 1,2,2,4,9,6,7,5,2,3,5,6,5...

JS陣列去重的幾種常見方法

方法一 最簡單陣列去重法 新建一新陣列,遍歷傳入陣列,值不在新陣列就push進該新陣列中 ie8以下不支援陣列的indexof方法 function uniq array return temp var aa 1,2,2,4,9,6,7,5,2,3,5,6,5 console.log uniq aa...

JS陣列去重的幾種常見方法

js陣列去重的幾種常見方法 一 簡單的去重方法 最簡單陣列去重法 新建一新陣列,遍歷傳入陣列,值不在新陣列就push進該新陣列中 ie8以下不支援陣列的indexof方法 function uniq array return temp var aa 1,2,2,4,9,6,7,5,2,3,5,6,5...