JavaScript陣列去重

2021-09-25 03:42:46 字數 2418 閱讀 2987

例1定義乙個簡單的一維陣列

let myarr =[0

,1,3

,2,4

,3,3

,4,5

,6,1

,7,8

];

方法一

使用es6的set

let myarr =[0

,1,3

,2,4

,3,3

,4,5

,6,1

,7,8

];let result =

[...

newset

(myarr)].

sort

((a, b)

=>);

console.

log(result)

;//[0,1,2,3,4,5,6,7,8]

方法二

使用高階函式filter

let myarr =[0

,1,3

,2,4

,3,3

,4,5

,6,1

,7,8

];let result = myarr.

filter

((x, index, self)

=>).

sort

((a, b)

=>);

console.

log(result)

;//[0,1,2,3,4,5,6,7,8]

方法三

使用for…in迴圈。

需要注意的是for…in中的x引數是string型別,而indexof返回的是number型別,若使用===比較需要進行轉換。

let myarr =[0

,1,3

,2,4

,3,3

,4,5

,6,1

,7,8

];let result =

;for

(let x in myarr)

} result.

sort

((a, b)

=>);

console.

log(result)

;//[0,1,2,3,4,5,6,7,8]

例2

定義乙個複雜一些的陣列

let myarr =[[

1,2,

2],[

3,4,

5,5]

,[6,

7,8,

9,[11

,12,[

12,13,

[14]]

]],10

];

方法一

使用es6的flat方法,flat預設只會拉平一層,可以傳入正整數控制,若不管巢狀多少層都想變成一維陣列,可以傳入infinity。

具體可參考es6陣列的擴充套件。

let myarr =[[

1,2,

2],[

3,4,

5,5]

,[6,

7,8,

9,[11

,12,[

12,13,

[14]]

]],10

];let result =

[...

newset

(myarr.

flat

(infinity))

].sort

((a, b)

=>);

console.

log(result)

;//[1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 12, 13, 14]

方法二

使用tostring和split方法把這個複雜的陣列轉為一維陣列,再使用之前的任意方法去重。

需要注意的是split方法轉換完後陣列中的每個元素是字串。

let myarr =[[

1,2,

2],[

3,4,

5,5]

,[6,

7,8,

9,[11

,12,[

12,13,

[14]]

]],10

];let result = myarr.

tostring()

.split

(",").

map(number)

.sort

((a, b)

=>);

console.

log(result)

;//[1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 12, 13, 14]

JavaScript 陣列去重

陣列去重,一般都是在面試的時候才會碰到,一般是要求手寫陣列去重方法的 如果是被提問到,陣列去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看。在真實的專案中碰到的陣列去重,一般都是後台去處理,很少讓前端處理陣列去重。雖然日常專案用到的概率比較低,但還是需要了解一下,以防面試的時候可能...

Javascript陣列去重

set是es2015引入的資料型別,意為集合 其不允許重複元素出現的特性,對於nan undefined null都適用 set是es2015引入的資料型別,意為集合 其不允許重複元素出現的特性,對於nan undefined null都適用 function unique arr var arr ...

javascript中陣列元素去重

下面我們來介紹幾種陣列去重的方法 一 第一種方法 vara array 1,2,3,4,1,2,3,4,2,1 for i 0 ifor x i 1 x if a i a x console.log a 這種方法主要運用了雙迴圈加splice 方法,將陣列a中的每乙個數和它後面的數進行對比,如果出現...