Andy的前後端技術筆記、生活紀錄
Javascript的Map及Set
發佈於: 2024-04-11 更新於: 2024-04-21 分類於: frontend > frontend_interview

Set是什麼?

Set 是一個構造函式可以建構一個如Array的資料集合,有個特別的地方是,如果傳入的值相同,會把多餘的值移除只剩下一個。

1
2
3
4
5
6
const array1 = [5,6,7,8,9,10]
const array2 = [9,10,11,12,13,14]

const set1 = new Set([...array1,...array2])
console.log(set1)
// Set(5,6,7,8,9,10,11,12,13,14)

用Set建立好的資料集合要透過他的method來處理,常見的有add, delete, has,其他的可以參考MDN的文件。

1
2
3
4
5
6
7
8
9
10
11
12
set1.add(15);
console.log(set1)
// Set(5,6,7,8,9,10,11,12,13,14,15)

set1.delete(9)
console.log(set1)
// Set(5,6,7,8,10,11,12,13,14,15)

console.log(set1.has(5))
// true
set1.has(9)
// false

Map是什麼?

Map 也是一個構建函式,可以建構一個如Object的資料集合,但Map的key值與原始的object不同,原始的object的key只能是字串,而Map可以是任何東西,另外Map的key/value是有順序性且可以做迭代處理的,在Object中若要做迭代,得透過Object.keys或是Object.entries搭配forEach或是for of之類的方法來遍歷所有元素,而且該順序不一定與用戶放進去的順序相同。

常見的有entries, keys, values,其他的可以參考MDN的文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const map1 = new Map([
['a', 1],
['b', 2],
['c', 3],
['d', 4],
['e', 5],
['f', 6],
])
console.log(map1.values().forEach(item => console.log(item)))
// 印出所有的value值

console.log(map1.keys().forEach(item => console.log(item)))
// 印出所有的key值

for(const [key,value] of map1.entries()){
console.log(key,value)
}
// 印出所有的key/value

map1.forEach((i, key)=> {
console.log(i, key)
})

用法實在很多元,有興趣的可以去MDN文件看看

--- 到底拉 The End ---