一、Map的基本用法
JavaScript對象本質上是鍵值對的集合,但是傳統上只能用字符串當作鍵,在使用上會有很大的限制。
ES6提供了Map數據結構,類似於對象,也是鍵值對的集合,但是鍵不止能用字符串,各種類型的值都可以當作鍵,並且鍵不能重複。
創建Map
const map = new Map([
["x",123],
["y",456],
["z",789]
]);
Map與Set一樣都是構造函數,使用new關鍵字創建實例。
Map傳遞的參數一般是數組,事實上,不僅僅是數組,任何具有 Iterator 接口、且每個成員都是一個雙元素的數組的數據結構都可以當作Map構造函數的參數。
const map = new Map([
["x",123],
["y",456],
["z",789]
]);
map.set("z","123");
上面代碼中對鍵名爲’z’的鍵進行了多次賦值,所以後面的值將覆蓋前面的值。
二、實例的屬性和操作方法
size
size屬性返回 Map 結構的成員總數。
const map = new Map([
["x",123],
["y",456],
["z",789]
]);
map.size;//3
set()
set方法設置鍵名key對應的鍵值爲value,然後返回整個 Map 結構。如果key已經有值,則鍵值會被更新,否則就新生成該鍵。
set方法返回當前的Map對象。
const map = new Map([
["x",123],
["y",456],
["z",789]
]);
map.set("k","852");
map.set("z","741");//鍵已經有值,重新賦值
get()
get方法讀取key對應的鍵值,如果找不到key,返回undefined。
const map = new Map([
["x",123],
["y",456],
["z",789]
]);
map.get("z");//789
map.get("k");//undefined
has()
has方法返回一個布爾值,表示某個鍵是否在當前 Map 對象之中。
const map = new Map([
["x",123],
["y",456],
["z",789]
]);
map.has("z");//true
map.has("k");//false
delete()
delete方法刪除某個鍵,返回true。如果刪除失敗,返回false。
const map = new Map([
["x",123],
["y",456],
["z",789]
]);
map.delete("x");//true
map.delete("a");//false
clear()
clear方法清除所有成員,沒有返回值。
const map = new Map([
["x",123],
["y",456],
["z",789]
]);
map.clear();
map.size;//0
forEach()
遍歷 Map 的所有成員。forEach方法還可以接受第二個參數,用來綁定this。
const map = new Map([
["x",123],
["y",456],
["z",789]
]);
map.forEach((value,key,map) => {
console.log(value,key,map)
// value : 值
// key : 鍵
// map 對象本身
});