map
類似於物件,都用於儲存key-value
結構的資料。但是,在傳統的物件上,只能用字串或者symbol
來作為鍵名。然而,map
與物件最大的差別就在於它可以各種資料型別作為鍵名。
map
是乙個建構函式,用於例項化例項。
const m =
newmap()
const o =
m.set
(o,'content')m.
get(o)
//content
除此以外,map()
可以接收乙個可迭代物件(前提是每個成員都是乙個雙元素結構的迭代物件)作為引數以初始化。
const map =
newmap([
['name'
,'張三'],
['title'
,'author']]
);map.
get(
'name'
)//張三
map.
get(
'title'
)//author
注意:
也許你會覺得奇怪,像set
那種只儲存值的有序資料結構轉換為陣列是很好理解的,但是map
是一種鍵值對結構的資料,那麼轉換為陣列以後成什麼樣呢??
答案是乙個二維陣列,元素都是陣列,陣列有兩個元素,第乙個元素就是鍵名,第二個元素就是鍵值。
const map =
newmap()
map.
set(1,
'a')
.set(,
)console.
log(
[...map]
)//[ [ 1, 'a' ], [ , ] ]
如果所有的鍵名都是字串,那麼這個map
可以直接轉換為物件,如果鍵名存在非字串,則先把鍵名轉換為字串,再轉換為物件。
官方沒有提供直接轉換的方法,所以此處還是自己手動寫了方法實現:
/**
* 將map轉換為普通物件
* @param map
* @return obj
*/function
maptoobj
(map)
map.
foreach
((value,key)
=>
)function
gettype
(obj)
return obj
}const map =
newmap()
map.
set(
"name"
,"jonas").
set(,[
])const obj =
maptoobj
(map)
console.
log(obj)
//
一行**解決:
new
map(object.
entries
(obj)
)
weakmap
與map
基本一致,區別有兩點:
如果需要暫時存放一些資料,那麼選用weakmap
就很合適了。常見的用途在於存放dom
節點。
weakmap
沒有遍歷方法,也沒有size
屬性。
ES6系列 ES6簡介
2015年6月17日,ecmascript的第六個版本正式發布,該版本正式名稱為ecmascript 2015,但通常被稱為ecmascript 6或者es6。瀏覽器對es6的支援情況 es6主要應用於node.js,如果想用在瀏覽器中,就需要使用轉碼器 將es6 轉成es5 這意味著,可以用es6...
es6中的Map集合
一 map。map 資料結構。它類似於物件,也是鍵值對的集合,但是 鍵 的範圍不限於字串,各種型別的值 包括物件 都可以當作鍵。二 map的用法。基本用法 set方法用於為map物件新增乙個鍵值對。get方法用於為獲取乙個map物件的值。has方法用於判斷map物件中是否包含某個值。delete方法...
ES6中的Map用法
幫大家了解es6中的map map 是 es6 中新增的資料結構,map 類似於物件,但普通物件的 key 必須是字串或者數字,而 map 的 key 可以是任何資料型別.map 的用法和普通物件基本一致,先看一下它能用非字串或者數字作為 key 的特性。const map new map cons...