溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

es6中map指的是什么意思

發(fā)布時間:2022-03-31 09:34:34 來源:億速云 閱讀:875 作者:小新 欄目:web開發(fā)

這篇文章將為大家詳細講解有關(guān)es6中map指的是什么意思,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

在es6中,map是一種數(shù)據(jù)結(jié)構(gòu),是“key-value”的集合,key可以是任意類型的數(shù)據(jù);map提供了“值與值”的對應(yīng),是一種更完善的hash結(jié)構(gòu)實現(xiàn),語法為“new Map([iterable])”。

本教程操作環(huán)境:windows10系統(tǒng)、ECMAScript 6.0版、Dell G3電腦。

es6中的map是什么意思

什么是Map

之前 ES5 中是沒有 Map 這種數(shù)據(jù)集合的,ES6才把它添加進來了。

Map 是 key-value 的集合,key 可以是任意類型的數(shù)據(jù),類似于對象,但對象的 key 只能是字符串。

ES6 提供了 Map 數(shù)據(jù)結(jié)構(gòu)。它類似于對象,也是鍵值對的集合,但是“鍵”的范圍不限于字符串,各種類型的值(包括對象)都可以當(dāng)作鍵。

也就是說,Object 結(jié)構(gòu)提供了“字符串—值”的對應(yīng),Map 結(jié)構(gòu)提供了“值—值”的對應(yīng),是一種更完善的 Hash 結(jié)構(gòu)實現(xiàn)。

如果你需要“鍵值對”的數(shù)據(jù)結(jié)構(gòu),Map 比 Object 更合適。

語法

new Map([iterable])

Iterable 可以是一個數(shù)組或者其他 iterable 對象,其元素為鍵值對(兩個元素的數(shù)組,例如: [[ 1, 'one' ],[ 2, 'two' ]])。

每個鍵值對都會添加到新的 Map。

null 會被當(dāng)做 undefined。

Object 和 Map 的比較:

Objects 和 Maps 類似的是,它們都允許你按鍵存取一個值、刪除鍵、檢測一個鍵是否綁定了值。因此(并且也沒有其他內(nèi)建的替代方式了)過去我們一直都把對象當(dāng)成 Maps 使用。不過 Maps 和 Objects 有一些重要的區(qū)別,在下列情況里使用 Map 會是更好的選擇

  • 一個Object的鍵只能是字符串或者 Symbols,但一個 Map 的鍵可以是任意值,包括函數(shù)、對象、基本類型。

  • Map 中的鍵值是有序的,而添加到對象中的鍵則不是。因此,當(dāng)對它進行遍歷時,Map 對象是按插入的順序返回鍵值。

  • 你可以通過 size 屬性直接獲取一個 Map 的鍵值對個數(shù),而 Object 的鍵值對個數(shù)只能手動計算。

  • Map 可直接進行迭代,而 Object 的迭代需要先 獲取它的鍵數(shù)組,然后再進行迭代。

  • Object 都有自己的原型,原型鏈上的鍵名有可能和你自己在對象上的設(shè)置的鍵名產(chǎn)生沖突。雖然 ES5 開始可以用 map = Object.create(null) 來創(chuàng)建一個沒有原型的對象,但是這種用法不太常見。

  • Map 在涉及頻繁增刪鍵值對的場景下會有些性能優(yōu)勢。

示例如下:

// 字符串作為key,和JS對象類似
var map = new Map()
// set
map.set('name', 'John')//兩個參數(shù),分為對應(yīng)map中key,value,  推進去的時候會自動檢查類型,Object,String,Array等l
map.set('age', 29)
// get
map.get('name') // John
map.get('age')  // 29
這么對代碼,看起來確實沒有JS對象簡潔
但Map的強大之處在于它的key可以是任意類型
// 對象作為key演示
var xy = {x: 10, y: 20}   // 坐標
var wh = {w: 100, h: 200} // 寬高
var map = new Map()
// set
map.set(xy, '坐標')
map.set(wh, '寬高')
// get
map.get(xy) // '坐標'
map.get(wh) // '寬高'

結(jié)果:

es6中map指的是什么意思

關(guān)于“es6中map指的是什么意思”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI