Map.prototype.forEach()

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

forEach() 方法用於 Map 例項,它會按照插入順序為該 Map 中的每個鍵/值對執行一次提供的函式。

試一試

function logMapElements(value, key, map) {
  console.log(`m[${key}] = ${value}`);
}

new Map([
  ["foo", 3],
  ["bar", {}],
  ["baz", undefined],
]).forEach(logMapElements);

// Expected output: "m[foo] = 3"
// Expected output: "m[bar] = [object Object]"
// Expected output: "m[baz] = undefined"

語法

js
forEach(callbackFn)
forEach(callbackFn, thisArg)

引數

callbackFn

要對 Map 中的每個條目執行的函式。該函式會接收以下引數:

value

每次迭代的值。

key

每次迭代的鍵。

map

正在迭代的 Map。

thisArg 可選

執行 callbackFn 時用作 this 的值。

返回值

無(undefined)。

描述

forEach 方法會為 Map 中實際存在的每個鍵執行一次提供的 callback。對於已刪除的鍵,不會呼叫。但是,對於存在但值為 undefined 的鍵,仍然會執行。

callback 會被呼叫,並帶有 **三個引數**:

  • 條目的 value
  • 條目的 key
  • 正在遍歷的 Map 物件

如果向 forEach 提供了 thisArg 引數,則在呼叫 callback 時,它將作為其 this 值傳遞。否則,將傳遞值 undefined 作為其 this 值。callback 最終可觀察到的 this 值根據 確定函式所見的 this 的常規規則 來確定。

每個值都會被訪問一次,除非在 forEach 完成之前被刪除又重新新增。callback 不會為在訪問之前被刪除的值呼叫。在 forEach 完成之前新增的新值將被訪問。

示例

列印 Map 物件的內容

以下程式碼為 Map 物件中的每個元素記錄一行

js
function logMapElements(value, key, map) {
  console.log(`map.get('${key}') = ${value}`);
}
new Map([
  ["foo", 3],
  ["bar", {}],
  ["baz", undefined],
]).forEach(logMapElements);
// Logs:
// "map.get('foo') = 3"
// "map.get('bar') = [object Object]"
// "map.get('baz') = undefined"

規範

規範
ECMAScript® 2026 語言規範
# sec-map.prototype.foreach

瀏覽器相容性

另見