在JavaScript中,Map
是一種集合類型,它可以儲存鍵值對,其中鍵和值可以是任意類型。這與傳統的JavaScript物件不同,傳統的物件只允許使用字串(或符號)作為鍵。Map
的這一特性使得它非常適合需要高效鍵查詢且鍵的類型多樣化的情況。
建立和初始化 Map
要建立一個新的Map,你可以使用Map建構函式。你也可以選擇將一個陣列傳入Map建構函式,這個陣列的元素自身也是陣列,其中包含兩個元素:鍵和值。
let myMap = new Map(); // 使用陣列初始化Map let initialData = [['key1', 'value1'], ['key2', 'value2']]; let myMapWithInitialData = new Map(initialData);
新增元素
使用set方法向Map新增元素。這個方法接受兩個參數:鍵和相對應的值。如果鍵已經存在,set方法將更新其值。
myMap.set('key1', 'value1'); myMap.set('key2', 'value2'); myMap.set('key3', 'value3');
取得元素
使用get方法可以根據鍵來取得對應的值。如果鍵不存在於Map中,則回傳undefined。
console.log(myMap.get('key1')); // "value1" console.log(myMap.get('key4')); // undefined
刪除元素
使用delete方法可以根據鍵來刪除對應的鍵值對。這個方法返回一個布林值,表示是否成功刪除。
myMap.delete('key1'); // true
檢查元素
使用has方法可以檢查Map中是否包含某個鍵。這個方法返回一個布林值。
console.log(myMap.has('key2')); // true console.log(myMap.has('key1')); // false,因為已被刪除
走訪Map
Map是可迭代的,可以使用for...of迴圈來走訪其鍵值對。此外,Map還提供了keys(), values(), 和entries()方法,分別用來走訪鍵、值、或是鍵值對。
for (let [key, value] of myMap) { console.log(key + " = " + value); } // 走訪鍵 for (let key of myMap.keys()) { console.log(key); } // 走訪值 for (let value of myMap.values()) { console.log(value); } // 使用forEach myMap.forEach((value, key) => { console.log(key + " = " + value); });
取得Map的大小
使用size屬性可以取得Map中鍵值對的數量。
console.log(myMap.size); // 2
使用Map的好處
- 鍵的多樣性:
Map
允許使用任何類型的值作為鍵,包括物件。 - 記憶效率:相較於使用物件作為鍵值儲存,
Map
在頻繁新增和刪除鍵值對的情況下通常表現更好。 - 順序保證:
Map
在走訪時會保持元素的插入順序,這與普通物件不同。
Map提供了一個靈活而強大的方式來管理帶有鍵值對的資料集,適合於許多需要高效資料查詢和操作的應用場景。