一、Map結構數組
Map爲「鍵值對」的數據結構數據結構
const m = new Map();
二、構造函數函數
做爲構造函數,Map 也能夠接受一個數組做爲參數。該數組的成員是一個個表示鍵值對的數組。spa
const map = new Map([ ['name', '張三'], ['title', 'Author'] ]); map.size // 2
map.has('name') // true
map.get('name') // "張三"
map.has('title') // true
map.get('title') // "Author"
三、鍵code
Map 的鍵其實是跟內存地址綁定的,只要內存地址不同,就視爲兩個鍵。blog
若是 Map 的鍵是一個簡單類型的值(數字、字符串、布爾值),則只要兩個值嚴格相等,Map 將其視爲一個鍵three
四、set內存
set
方法設置鍵名key
對應的鍵值爲value
,而後返回整個 Map 結構。若是key
已經有值,則鍵值會被更新,不然就新生成該鍵。字符串
set結構的新增成員爲add方法,其餘方法如has、delete、clear同樣。get
五、get(key)
六、遍歷方法
keys():返回鍵名的遍歷器。
values():返回鍵值的遍歷器。
entries():返回全部成員的遍歷器。
forEach():遍歷 Map 的全部成員。
for (let item of map.entries()) { console.log(item[0], item[1]); } // "F" "no" // "T" "yes"
// 或者
for (let [key, value] of map.entries()) { console.log(key, value); } // "F" "no" // "T" "yes"
// 等同於使用map.entries()
for (let [key, value] of map) { console.log(key, value); } // "F" "no" // "T" "yes"
七、轉爲數組
Map 結構轉爲數組結構,比較快速的方法是使用擴展運算符(...
)。
const map = new Map([ [1, 'one'], [2, 'two'], [3, 'three'], ]); [...map.keys()]
set結構也是這樣轉換爲數組。
八、forEach
map.forEach(function(value, key, map) { console.log("Key: %s, Value: %s", key, value); });
注:forEach的回調函數第一個參數爲value,第二個爲key。
set結構具備foreach方法。
總結:與set結構的方法區別有構造函數和新增函數(add/set)