JavaScript中Map的使用

Map 對象保存鍵值對。任何值(對象或者原始值) 都可以作為一個鍵或一個值。

語法

new Map([iterable])

iterable

Iterable 可以是一個數(shù)組或者其他 iterable 對象,其元素或為鍵值對,
或為兩個元素的數(shù)組。 每個鍵值對都會添加到新的 Map。null 會被當做 undefined。

Objects 和 maps 的比較

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

  • 一個對象的鍵只能是字符串或者 Symbols"Symbol()函數(shù)會返回symbol類型的值,該類型具有靜態(tài)屬性和靜態(tài)方法。它的靜態(tài)屬性會暴露幾個內(nèi)建的成員對象;它的靜態(tài)方法會暴露全局的symbol注冊,且類似于內(nèi)建對象類,但作為構(gòu)造函數(shù)來說它并不完整,因為它不支持語法:"new Symbol()"。"),但一個 Map 的鍵可以是任意值,包括函數(shù)、對象、基本類型。
  • 你可以通過 size 屬性直接獲取一個 Map 的鍵值對個數(shù),而 Object 的鍵值對個數(shù)只能手動計算。
  • Map 是可迭代的,而 Object 的迭代需要先獲取它的鍵數(shù)組然后再進行迭代。
  • Object 都有自己的原型,所以原型鏈上的鍵名有可能和對象上的鍵名產(chǎn)生沖突。雖然 ES5 開始可以用 map = Object.create(null) 來創(chuàng)建一個沒有原型的對象,但是這種用法不太常見。
  • Map 在涉及頻繁增刪鍵值對的場景下會有些性能優(yōu)勢。

實際使用

/**
 * map() 方法返回一個新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值。
 * map() 方法按照原始數(shù)組元素順序依次處理元素。
 * 注意: map() 不會對空數(shù)組進行檢測。
 * 注意: map() 不會改變原始數(shù)組。
 */
var m = new Map([[1,"x"],[2,"y"],[3,"z"]]);

//返回Map對象的鍵/值對的數(shù)量。
console.log(m.size)
//map賦值
m.set("key","value")
//判斷是否有值
m.has("bar"); // false
//返回鍵對應的值,如果不存在,則返回undefined。
m.get("key")
//移除任何與鍵相關(guān)聯(lián)的值,并且返回該值,該值在之前會被Map.prototype.has(key)返回為true。
//之后再調(diào)用Map.prototype.has(key)會返回false。
m.delete("key")
//返回一個新的 Iterator對象, 它按插入順序包含了Map對象中每個元素的鍵 。
m.keys();
//清空map中的值
m.clear();
for of 遍歷map
for (var x of m){
    //遍歷map
    console.log(x);
    console.log(x[0]);
    // test();
    // console.log(area_of_circle(3));
}
//Map的回調(diào)函數(shù)參數(shù)依次為value、key和map本身:
m.forEach(function(value,key,map){
    console.log('value='+value+',key='+key+',map='+map)
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文為阮一峰大神的《ECMAScript 6 入門》的個人版提純! babel babel負責將JS高級語法轉(zhuǎn)義,...
    Devildi已被占用閱讀 2,134評論 0 4
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,569評論 0 13
  • 第一章:塊級作用域綁定 塊級聲明 1.var聲明及變量提升機制:在函數(shù)作用域或者全局作用域中通過關(guān)鍵字var聲明的...
    BeADre_wang閱讀 998評論 0 0
  • 大家好!我是一位兩個孩子的普通媽媽,大的是兒子今年13歲,小的女兒,今年8歲。由于之前一直做生意,而忽略了對孩子的...
    481b17e2de02閱讀 637評論 0 4
  • 1 “野蠻生長” P2P網(wǎng)貸公司從13年的800多家到2015年底的3464家,中國P2P市場在過去兩年經(jīng)歷了不折...
    酸辣土豆絲v閱讀 295評論 0 1

友情鏈接更多精彩內(nèi)容