ES6基本的語(yǔ)法(十一) Map

Map

  • Map 是 ES6 提供的構(gòu)造函數(shù)荤胁,能造出一種新的存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)嘉汰。本質(zhì)上為鍵值對(duì)的集合
  • key 對(duì)應(yīng) value媒佣,key 和 value 唯一斋扰,任何值都可以當(dāng)屬性
  • 可以讓對(duì)象當(dāng)屬性,去重

基本用法

let op = new Map([["name","ccc"],["age","3"]])
console.log(op);
// Map(2) {"name" => "ccc", "age" =>"3"}

let op = new Map([[{},"ccc"]])
console.log(op);
// Map(2) {{} => "ccc"}

Map 中任何值都可以當(dāng)屬性央星,上面的代碼中霞怀,用了一個(gè)空對(duì)象當(dāng)做屬性。

Map 上的方法


// set(); 增加屬性和屬性值
let op = new Map();
op.set('name','ccc');
op.set({},'xxx');

// get(); 取出屬性值
op.get("name"); // 輸出 ccc
// 在取值原始值的時(shí)候要用一個(gè)變量去接受
const obj = {};
op.get(obj); // 輸出 xxx

// delete 刪除 不舉例
// clear 清空 不舉例
// has 是否有屬性 不舉例

// size map 構(gòu)造對(duì)象出來(lái)的長(zhǎng)度
op.size() // 輸出 4

// keys 拿到屬性
op.keys() // MapIterator {"name", {}}

// forEach 遍歷
op.forEach(ele =>{
    console.log(ele)
    // 輸出 ccc , xxx
})

// for of 遍歷
for(let porp of op) {
    console.log(porp);
    // 輸出 ["name","ccc"] [{},"xxx"] 返回鍵值對(duì)
    // 想要拿到屬性和值
    console.log(porp[0], porp[1])
}

模擬實(shí)現(xiàn) Map

原理實(shí)現(xiàn)

  • 鏈接鏈表
  • hash算法

鏈接鏈表


let a = {
    name: 'ttt',
    next: b
}

let b = {
    name: 'xxx',
    next: c
}

let c = {
    name: 'ccc',
    next: null
}

鏈?zhǔn)浇Y(jié)構(gòu).png

這種 a.next 可以訪問(wèn)到 b莉给,a.next.next 可以訪問(wèn)到 c毙石,連成鏈的方式叫鏈表,Map 在存值的時(shí)候就用到了鏈表的概念颓遏。在 Map 里面的成員都存到了對(duì)象里面去胁黑,之后再放到數(shù)組里面去

let op = new Map([['name1', 'ttt'],['name2', 'xxx']]);

/* 把 Map 里面的成員存到對(duì)象里面去 */

{
    key: 'name1',
    value: 'ttt'
}
{
    key: 'name2',
    value: 'ccc'
}

// 桶
[
    {},
    // 鏈?zhǔn)酱鎯?chǔ)
    {
        next:{
            key: 'name1',
            value: 'ttt',
             // 按照 key 值固定對(duì)象 通過(guò) hash 算法固定
            next: {
                key: 'name2',
                value: 'ccc'
            }
        }
    },
    {},
    {},
    {},
    {},
    {},
    {}
]

上面的代碼,就是把 Map 里面的成員變量存到對(duì)象里面去州泊,在通過(guò)數(shù)組鏈?zhǔn)酱鎯?chǔ),通過(guò) key 值利用 hash 固定對(duì)象漂洋。利用 hash 算法的主要目的是要把不定范圍的值轉(zhuǎn)換成特定范圍的值遥皂。比如在存值的時(shí)候 key 的類(lèi)型是不一樣的力喷,可能是 String、Number演训,所以要把這些不定范圍的值轉(zhuǎn)換成特定范圍的值弟孟。

Map實(shí)現(xiàn)原理
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市样悟,隨后出現(xiàn)的幾起案子拂募,更是在濱河造成了極大的恐慌,老刑警劉巖窟她,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陈症,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡震糖,警方通過(guò)查閱死者的電腦和手機(jī)录肯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吊说,“玉大人论咏,你說(shuō)我怎么就攤上這事“渚” “怎么了厅贪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)雅宾。 經(jīng)常有香客問(wèn)我养涮,道長(zhǎng),這世上最難降的妖魔是什么秀又? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任单寂,我火速辦了婚禮,結(jié)果婚禮上吐辙,老公的妹妹穿的比我還像新娘宣决。我一直安慰自己,他們只是感情好昏苏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布尊沸。 她就那樣靜靜地躺著,像睡著了一般贤惯。 火紅的嫁衣襯著肌膚如雪洼专。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天孵构,我揣著相機(jī)與錄音屁商,去河邊找鬼。 笑死颈墅,一個(gè)胖子當(dāng)著我的面吹牛蜡镶,可吹牛的內(nèi)容都是我干的雾袱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼官还,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芹橡!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起望伦,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤林说,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后屯伞,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體腿箩,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年愕掏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了度秘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡饵撑,死狀恐怖剑梳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滑潘,我是刑警寧澤垢乙,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站语卤,受9級(jí)特大地震影響追逮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜粹舵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一钮孵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧眼滤,春花似錦巴席、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至堰塌,卻和暖如春赵刑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背场刑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工般此, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓恤煞,卻偏偏與公主長(zhǎng)得像屎勘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子居扒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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