JavaScript 標(biāo)準(zhǔn)之 Map對(duì)象

?????前沿

一直以來(lái)使用數(shù)組和對(duì)象來(lái)定義數(shù)據(jù)模型,前幾天在翻閱ES6語(yǔ)法的時(shí)候相艇,突然發(fā)現(xiàn)有一種Map對(duì)象對(duì)操作鍵值對(duì)特別好用欲鹏,而且代碼更簡(jiǎn)潔明了赔嚎,簡(jiǎn)直太棒了。今天胧弛,我們就來(lái)一步步了解什么是Map對(duì)象尤误,詳細(xì)給大家介紹一下Map對(duì)象的屬性和方法。希望大家以后再數(shù)據(jù)操縱方法多一種解決問(wèn)題的方法结缚,這是ECMAScript 6 新增的數(shù)據(jù)結(jié)構(gòu)损晤。

? ?? 定義

? ?Map對(duì)象保存鍵/值對(duì),是鍵/值對(duì)的集合红竭。任何值(對(duì)象或者原始值) 都可以作為一個(gè)鍵或一個(gè)值尤勋。Object結(jié)構(gòu)提供了“字符串—值”的對(duì)應(yīng),Map結(jié)構(gòu)提供了“值—值”的對(duì)應(yīng)茵宪。

? ? ?語(yǔ)法

iterable?可以是一個(gè)數(shù)組或者其他iterable?對(duì)象最冰,其元素或?yàn)殒I值對(duì),或?yàn)閮蓚€(gè)元素的數(shù)組稀火。?每個(gè)鍵值對(duì)都會(huì)添加到新的?Map暖哨。null?會(huì)被當(dāng)做?undefined。

? ? ?描述

????? ? 集合中的鍵和值可以是任何類型凰狞。如果使用現(xiàn)有鍵向集合添加值篇裁,則新值會(huì)替換舊值。

?Object?和?Map?對(duì)象的對(duì)比:

相似點(diǎn):?都允許你按鍵存取一個(gè)值赡若、刪除鍵茴恰、檢測(cè)一個(gè)鍵是否綁定了值。

?不同點(diǎn):

????????????????????? ?1.?一個(gè)對(duì)象的鍵只能是字符串或者?Symbols斩熊,但一個(gè)?Map?的鍵可以是任意值往枣,包括函數(shù)、對(duì)象粉渠、基本類型分冈。

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

3.?通過(guò)?size?屬性直接獲取一個(gè)?Map?的鍵值對(duì)個(gè)數(shù)坡椒,而?Object?的鍵值對(duì)個(gè)數(shù)只能手動(dòng)計(jì)算扰路。

4.?Map?是可迭代的,而?Object?的迭代需要先獲取它的鍵數(shù)組然后再進(jìn)行迭代倔叼。

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

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

? ? 屬性

????????????? ? 下表列出了Map對(duì)象的屬性

屬性描述


? ? Map實(shí)例

所有的Map實(shí)例都會(huì)繼承自Map.prototype巡验。

? ? ? ? 屬性

????????????? ? ?????下表列出了Map對(duì)象實(shí)例的屬性


????? ? 方法

下表列出了Map對(duì)象實(shí)例的方法

????????示例

Map對(duì)象類似于對(duì)象际插,也是鍵值對(duì)的集合,但是“鍵”的范圍不限于字符串显设,各種類型的值(包括對(duì)象)都可以當(dāng)作鍵框弛。

作為構(gòu)造函數(shù),Map也可以接受一個(gè)數(shù)組作為參數(shù)捕捂。該數(shù)組的成員是一個(gè)個(gè)表示鍵值對(duì)的數(shù)組功咒。


????? ?????????如果對(duì)同一個(gè)鍵多次賦值,后面的值將覆蓋前面的值绞蹦。

如果讀取一個(gè)未知的鍵力奋,則返回undefined。S钠摺>耙蟆!注意澡屡,只有對(duì)同一個(gè)對(duì)象的引用猿挚,Map結(jié)構(gòu)才將其視為同一個(gè)鍵。Map 的鍵實(shí)際上是跟內(nèi)存地址綁定的驶鹉,只要內(nèi)存地址不一樣绩蜻,就視為兩個(gè)鍵。這就解決了同名屬性碰撞(clash)的問(wèn)題室埋,我們擴(kuò)展別人的庫(kù)的時(shí)候办绝,如果使用對(duì)象作為鍵名,就不用擔(dān)心自己的屬性與原作者的屬性同名姚淆。

Map.clear() 方法清除所有成員孕蝉,沒(méi)有返回值。

Map對(duì)象遍歷方法示例


結(jié)合數(shù)組的map() 和filter()方法腌逢,可以實(shí)現(xiàn)對(duì)Map的遍歷和過(guò)濾(Map本身沒(méi)有map()和filter()方法)

Map對(duì)象還有一個(gè)forEach方法降淮,與數(shù)組的forEach方法類似,也可以實(shí)現(xiàn)遍歷搏讶。

forEach方法還可以接受第二個(gè)參數(shù)佳鳖,用來(lái)綁定this霍殴。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市系吩,隨后出現(xiàn)的幾起案子来庭,更是在濱河造成了極大的恐慌,老刑警劉巖淑玫,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巾腕,死亡現(xiàn)場(chǎng)離奇詭異面睛,居然都是意外死亡絮蒿,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門叁鉴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)土涝,“玉大人,你說(shuō)我怎么就攤上這事幌墓〉常” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵常侣,是天一觀的道長(zhǎng)蜡饵。 經(jīng)常有香客問(wèn)我,道長(zhǎng)胳施,這世上最難降的妖魔是什么溯祸? 我笑而不...
    開(kāi)封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮舞肆,結(jié)果婚禮上焦辅,老公的妹妹穿的比我還像新娘。我一直安慰自己椿胯,他們只是感情好筷登,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著哩盲,像睡著了一般前方。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上廉油,一...
    開(kāi)封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天镣丑,我揣著相機(jī)與錄音,去河邊找鬼娱两。 笑死莺匠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的十兢。 我是一名探鬼主播趣竣,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼摇庙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了遥缕?” 一聲冷哼從身側(cè)響起卫袒,我...
    開(kāi)封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎单匣,沒(méi)想到半個(gè)月后夕凝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡户秤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年码秉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸡号。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡转砖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鲸伴,到底是詐尸還是另有隱情府蔗,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布汞窗,位于F島的核電站姓赤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏仲吏。R本人自食惡果不足惜不铆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜘矢。 院中可真熱鬧狂男,春花似錦、人聲如沸品腹。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)舞吭。三九已至泡垃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間羡鸥,已是汗流浹背蔑穴。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惧浴,地道東北人存和。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親捐腿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纵朋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容