例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中的每乙個數和它後面的數進行對比,如果出現...