Map.prototype.forEach()
forEach()
方法将会以插入顺序对 Map 对象中的每一个键值对执行一次参数中提供的回调函数。
语法
myMap.forEach(callback[, thisArg])
参数
-
callback
- 必要,每个元素所要执行的函数。
-
thisArg
-
可选,
callback
执行时其this
的值。 -
返回值
undefined
.
概述
forEach
方法将对
Map
中真实存在的每一个元素执行一次参数中提供的回调函数,它不会对任何已经被删除的元素执行调用。然而,它还会对键存在而值为
undefined
的元素执行调用。
callback
函数有
三个参数
:
-
value
- 元素的值 -
key
- 元素的键 -
Map
- 当前正在被遍历的对象
如果参数
forEach
带有一个
thisArg
参数,在调用的时候,这个参数将传给
callback
函数作为其 this 的值。否则,函数将默认使用
undefined
传给
callback
函数作为其
this
值。最终,这里的
this
的值将依照函数观测并确定
this
的相关规则由
callback
函数最终观察到的值决定。
forEach
函数处理的元素的范围为第一次执行 callback 函数时 Map 对象中的键值对集合。在
Map
对象调用
forEach
之后加入的元素将不会被调用
callback
函数。如果在调用
forEach
之后
Map
对象中的被改变或者删除了,它们传给
callback
函数的值将会变成
forEach
函数访问它们时的值;
callback
不会访问其调用其间被删除的元素。
forEach
仅仅是对
Map
对象中的每一个元素执行一遍
callback
函数,然后直接返回
undefined
。
示例
打印一个
Map
对象中的元素
下面的代码在一行中打印一个
Map
对象的每一个元素:
function logMapElements(value, key, map) { console.log("m[" + key + "] = " + value); } Map([["foo", 3], ["bar", {}], ["baz", undefined]]).forEach(logMapElements); // logs: // "m[foo] = 3" // "m[bar] = [object Object]" // "m[baz] = undefined"