Map是一種鍵值隊的集合,和物件Object類似。兩者的區別:
一、Map和Object 的區別
- 鍵的型別:在Map中,鍵可以是任何型別(包括物件、函式、undefined、NaN等等);而在Object中,鍵只能是字串或者符號。
- 有序性:在Map中,鍵值對是按照插入(新增)的順序排列的;而Object不能保證順序
二、建立:
建立空的Map,透過set()新增資料:
const map1 = new Map() map1.set(1,2) map1.set('color','red') map1.set({a:1},'北京')
使用二維陣列初始化Map:
const map = new Map([ [1,2], ['color','red'], [{a:1},'北京'] ])
上面兩種程式碼均列印如下:
三、例項的屬性和方法
- size: 返回Map例項成員總數
console.log(map1.size) //3
- set(key,value):新增key對應的value,返回Map 結構本身
map1.set(1,2) map1.set('color','red') map1.set({a:1},'北京')
- get(key): 獲取key對應的值
console.log(map1.get(1))// 2
- delete(key): 刪除某鍵值隊,返回一個布林值,表示刪除是否成功
console.log(map1.delete(1)) //true
- has(key): 某個鍵是否在當前Map物件之中
console.log(map1.has(1)) //false
- clear(): 清空所有的鍵值隊
map1.clear()
四、遍歷
- keys():返回鍵名的遍歷器
for(let i of map1.keys()){ console.log(i) //1 color {a:1} }
- values():返回鍵值的遍歷器
for(let i of map1.values()){ console.log(i) //2 red 北京 }
- entries():返回鍵值對的遍歷器
for(let [key,value] of map1.entries()){ console.log(key,value) }
- forEach():遍歷每個成員
map1.forEach((item,key) =>{ console.log(item,key) })
- for...of:Map內部已實現了迭代器,所以可以是用for...of
for(let i of map1){ console.log(i) //[1,2] ['color','red'] [{a:1},1] }