Map.prototype.forEach()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Map 实例的 forEach() 方法按插入顺序对该 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 的值执行函数。

callbackFn 接收三个参数

  • 当前的 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);
// 打印:
// "map.get('foo') = 3"
// "map.get('bar') = [object Object]"
// "map.get('baz') = undefined"

规范

Specification
ECMAScript® 2025 Language Specification
# sec-map.prototype.foreach

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
forEach

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

参见