JavaScript Map 方法
new Map() 方法
可以通過將數組傳遞給 new Map()
構造函數來創建 Map:
實例
// 創建一個 Map const fruits = new Map([ ["apples", 500], ["bananas", 300], ["oranges", 200] ]);
Map.get()
可以使用 get()
方法獲取 Map 中鍵的值:
實例
fruits.get("apples");
Map.set()
可以使用 set()
方法向 Map 添加元素:
實例
// 創建一個 Map const fruits = new Map(); // 設置 Map 值 fruits.set("apples", 500); fruits.set("bananas", 300); fruits.set("oranges", 200);
set()
方法也可以用于更改現有的 Map 值:
實例
fruits.set("apples", 500);
Map.size
size
屬性返回 Map 中元素的數量:
實例
fruits.size;
Map.delete()
delete()
方法移除 Map 中的一個元素:
實例
fruits.delete("apples");
Map.clear()
clear()
方法移除 Map 中的所有元素:
實例
fruits.clear();
Map.has()
如果 Map 中存在某個鍵,has()
方法返回 true:
實例
fruits.has("apples");
嘗試以下代碼:
fruits.delete("apples"); fruits.has("apples");
Map.forEach()
forEach()
方法為 Map 中的每個鍵值對調用回調函數:
實例
// 列出所有條目 let text = ""; fruits.forEach(function(value, key) { text += key + ' = ' + value; });
Map.entries()
entries()
方法返回一個包含 Map 中 [key, value] 對的迭代器對象:
實例
// 列出所有條目 let text = ""; for (const x of fruits.entries()) { text += x; }
Map.keys()
keys()
方法返回一個包含 Map 中鍵的迭代器對象:
實例
// 列出所有鍵 let text = ""; for (const x of fruits.keys()) { text += x; }
Map.values()
values()
方法返回一個包含 Map 中值的迭代器對象:
實例
// 列出所有值 let text = ""; for (const x of fruits.values()) { text += x; }
可以使用 values()
方法對 Map 中的值求和:
實例
// 對所有值求和 let total = 0; for (const x of fruits.values()) { total += x; }
對象作為鍵
提示:能夠使用對象作為鍵是 Map 的一個重要特性。
實例
// 創建對象 const apples = {name: 'Apples'}; const bananas = {name: 'Bananas'}; const oranges = {name: 'Oranges'}; // 創建一個 Map const fruits = new Map(); // 向 Map 添加新元素 fruits.set(apples, 500); fruits.set(bananas, 300); fruits.set(oranges, 200);
注意:鍵是對象(apples),而不是字符串("apples"):
實例
fruits.get("apples"); // 返回 undefined
JavaScript Map.groupBy()
ES2024 向 JavaScript 添加了 Map.groupBy()
方法。
Map.groupBy()
方法根據回調函數返回的字符串值對對象的元素進行分組。
Map.groupBy()
方法不會更改原始對象。
實例
// 創建一個數組 const fruits = [ {name: "apples", quantity: 300}, {name: "bananas", quantity: 500}, {name: "oranges", quantity: 200}, {name: "kiwi", quantity: 150} ]; // 用于分組的回調函數 function myCallback({ quantity }) { return quantity > 200 ? "ok" : "low"; } // 按數量分組 const result = Map.groupBy(fruits, myCallback);
瀏覽器支持
Map.groupBy()
是 ES2024 的特性。
自 2024 年 3 月起,新瀏覽器均支持該特性:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 117 | Edge 117 | Firefox 119 | Safari 17.4 | Opera 103 |
2023 年 9 月 | 2023 年 9 月 | 2023 年 10 月 | 2024 年 10 月 | 2023 年 5 月 |
警告:
ES2024 特性相對較新。
舊版瀏覽器可能需要替代代碼(Polyfill)。
Object.groupBy() 與 Map.groupBy() 的區別
Object.groupBy()
和 Map.groupBy()
的區別在于:
Object.groupBy()
將元素分組到 JavaScript 對象中。
Map.groupBy()
將元素分組到 Map 對象中。
完整的 Map 參考手冊
如需完整參考,請訪問我們的:JavaScript Map 參考手冊。
該手冊包含所有 Map 屬性和方法的描述和實例。