這篇文章將為大家詳細(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電腦。
什么是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é)果:
關(guān)于“es6中map指的是什么意思”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
本文標(biāo)題:es6中map指的是什么意思
URL標(biāo)題:http://aaarwkj.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)