JS之路 Day09 - What is Map ?
前言
昨天把set
講完,今天換Map
,首先要注意不要跟array
的方法Array.prototype.map()
搞混,這是不一樣的東西,那就 let’s go 今天的主題。
Map
跟object
一樣都是key-value pairs
,不同的是Map
的key
可以是任意類型。
map 的基本方法跟屬性
- new Map() => 創造 map。
- set() => 為 map 裡面設定 key 跟 value。
- get() => 取出 map 裡面的 key 跟 value。
- delete() => 刪除 map 裡面的 key。
- has() => map 裡存在指定的 key。
- clear() => 刪除 map 裡面所有東西。
- size => 會回傳 map 裡面元素的數量。
有些其實跟set
來使用看看吧:
1 | const map = new Map(); |
除了用set()
添加元素外,也能透過array
添加
先創立一個Map
的空間出來,再set()
是比較直覺添加元素的方式,但其實也可以直接在創建時就添加完畢,只要最開始創建的new Map()
就直接塞array
就可以達成。
1 | const fruits = new Map([ |
set()
除了可以添加元素外,也可以重新設置現有元素
set()
在完全沒有東西時,是添加元素的功能,但在已經有東西的地方上,假如又在使用set()
添加在同一個key
東西上去,會直接覆蓋上一個key
的value
,因為同一組key
只能同時擁有一組value
,而這種方式也能達到重新設置現有元素的功能。
1 | const fruits = new Map(); |
創立 map 是使用new Map()
,那我不想new
行不行?
不行,Map
一定只能用new operator
來建立,JavaScript
就是這樣規定的,不這樣做就會送你報錯。
1 | const map = Map(); |
可以理解成一些特別的內建物件會需要用構造函數的方式來進行物件的實體化。
順帶一提,Set
也是一定要用new operator
,不然會送報錯。
Map 用途
當希望物件的key
不會重複時,可以使用Map
,或者是想要讓物件的key
是各種型別的時候。
還有順序如果很重要的話,就會考慮使用Map
,因為使用Map
時元素的使用順序會被保留。
reference
[1] MDN - Map
[2] W3Schools - JavaScript Maps
[3] The Modern JavaScript Tutorial - Map and Set
[4] JS 原力覺醒 Day29 - Set / Map
[5] PJCHENder -JavaScript Map
[6] 前端工程師用 javaScript 學演算法 - Map