ES6系列 詳解ES6中的Map

2021-10-03 05:20:56 字數 1838 閱讀 1214

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)

)

weakmapmap基本一致,區別有兩點:

如果需要暫時存放一些資料,那麼選用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...