(一)Map 數(shù)據(jù)結(jié)構(gòu)
創(chuàng)新互聯(lián)專業(yè)提供成都移動機房托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買成都移動機房托管服務(wù),并享受7*24小時金牌售后服務(wù)。
1.Map 數(shù)據(jù)結(jié)構(gòu),類似于對象,鍵值對的集合, 所有的數(shù)據(jù)都是唯一的,不會重復(fù),每條數(shù)據(jù)都需要放在一個數(shù)組中,它本身就是一個構(gòu)造函數(shù)
size 數(shù)據(jù)的長度
set() 添加一個數(shù)據(jù)
delete() 刪除一條數(shù)據(jù)
get () 獲取一條數(shù)據(jù)
has() 查找某條數(shù)據(jù),返回一個布爾值
clear() 刪除所有數(shù)據(jù)
參考資料:
Map結(jié)構(gòu)跟我們上節(jié)講解的set結(jié)構(gòu)語法差不多 《理解數(shù)據(jù)結(jié)構(gòu)之Set,只要5分鐘》 ,不同是Map語法是一種數(shù)組鍵值對格式,Map也是處理了防止對象鍵值強制類型轉(zhuǎn)換問題。Map是利用數(shù)組特性解決的,我們都知道數(shù)組可以傳入任意類型值,所以Map結(jié)構(gòu)也接收所有類型值。我們剛才說了值不會向?qū)ο竽菢舆M(jìn)行強制類型轉(zhuǎn)換,如24和"24"就是兩種類型關(guān)系,互不會影響 。
上面example中,創(chuàng)建一個Map對象,上面我們說過Map是一個數(shù)組對象,里面還接收一個數(shù)組對象也就是二維數(shù)組,里面的參數(shù)也就是鍵值對形式,然后設(shè)置map值,map.set方法接收兩個參數(shù),前者是key值后者是value值。這時Map對象添加了name值
上面example中,Map對象提供了查看size屬性,查看當(dāng)前Map結(jié)構(gòu)有幾組數(shù)據(jù)。
上面example中,我們使用Map.get方法獲取對象的屬性值。如果獲取一個Map對象中不存在的則返回undefined。
上面example中,Map.has返回的是一個Boolean值,會去這個Map中查找如果找到返回true,否則返回false,一般用于檢測這個Map中存在該值的時候使用。
上面example中,Map.delete方法刪除結(jié)構(gòu)中某個值,如果這個值存在Map結(jié)構(gòu)中刪除則返回true,如果刪除一個不存在的值則返回false。
上面example中,Map.clear該方法則會清除Map結(jié)構(gòu)中所有的屬性。
上面example中,可以看到Map結(jié)構(gòu)是一個二維數(shù)組,里面是鍵值對形式的。Map結(jié)構(gòu)也可以使用forEach遍歷,它接收3個參數(shù):
我們上面講了Map可以forEach遍歷,這樣循環(huán)解析也可以組成一個新的對象。那么Es6方法新提供了快速將這種結(jié)構(gòu)轉(zhuǎn)換為對象。
一句話總結(jié):Set結(jié)構(gòu)主要用作于判斷某個值是否存在該對象中,而Map結(jié)構(gòu)主要用作于從當(dāng)前結(jié)構(gòu)中獲取該對象的值。
有的情況下我們需求想實現(xiàn),我第一次請求后臺接口Api,當(dāng)我請求過后第二次就走緩存,不在發(fā)送接口Api。
我們在項目需求時,肯定會遇到一個狀態(tài)對應(yīng)著一種操作,如下:
1、Map 結(jié)構(gòu)
作為構(gòu)造函數(shù),Map 也可以接受一個數(shù)組作為參數(shù)。該數(shù)組的成員是一個個表示鍵值對的數(shù)組。
事實上,不僅僅是數(shù)組,任何具有 Iterator 接口、且每個成員都是一個雙元素的數(shù)組的數(shù)據(jù)結(jié)構(gòu)都可以當(dāng)作Map構(gòu)造函數(shù)的參數(shù)。這就是說,Set和Map都可以用來生成新的 Map。
如果對同一個鍵多次賦值,后面的值將覆蓋前面的值。
2、Map的實例屬性和操作方法
3、Map的遍歷方法
Map 的遍歷順序就是插入順序。
Map 結(jié)構(gòu)轉(zhuǎn)為數(shù)組結(jié)構(gòu),比較快速的方法是使用擴(kuò)展運算符(...)。
Map 還有一個forEach方法,與數(shù)組的forEach方法類似,也可以實現(xiàn)遍歷。forEach方法還可以接受第二個參數(shù),用來綁定this。
4、Map結(jié)構(gòu)與其它結(jié)構(gòu)進(jìn)行相互轉(zhuǎn)換
5、WeakMap
參考鏈接 : 阮一峰ES6教程