es6中map指的是什么意思

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

創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),咸寧網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:咸寧等地區(qū)。咸寧做網(wǎng)站價(jià)格咨詢:028-86922220

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

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

es6中的map是什么意思

什么是Map

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

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

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

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

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

語(yǔ)法

new Map([iterable])

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

每個(gè)鍵值對(duì)都會(huì)添加到新的 Map。

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

Object 和 Map 的比較:

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

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

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

  • 你可以通過(guò) size 屬性直接獲取一個(gè) Map 的鍵值對(duì)個(gè)數(shù),而 Object 的鍵值對(duì)個(gè)數(shù)只能手動(dòng)計(jì)算。

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

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

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

示例如下:

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

結(jié)果:

es6中map指的是什么意思

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

本文標(biāo)題:es6中map指的是什么意思
URL標(biāo)題:http://bm7419.com/article32/ijhpsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化App設(shè)計(jì)、小程序開(kāi)發(fā)、、網(wǎng)站制作云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)