JavaScript的Map对象有原生forEach方法,参数顺序为value、key、map,与数组的(item, index, array)不同,且按插入顺序遍历。

JavaScript 中的 Map 对象没有原生的 forEach 方法?错,它有——而且是内置方法,用法和数组类似,但参数顺序和含义不同。
Map.forEach() 的基本用法
Map 实例自带 forEach 方法,接收一个回调函数作为参数。这个回调函数会为每个键值对执行一次,传入三个参数:值(value)、键(key)、当前 Map 对象本身。注意:顺序是 value, key, map,和数组的 forEach(item, index, array)不同,容易混淆。
- 第一个参数是 当前键对应的值
- 第二个参数是 当前键本身
- 第三个参数是 正在遍历的 Map 实例(通常很少用)
写法示例:常见场景
比如有一个记录用户积分的 Map:
const userPoints = new Map([['alice', 120], ['bob', 85], ['carol', 200]]);遍历时可以直接解构或直接使用:
立即学习“Java免费学习笔记(深入)”;
userPoints.forEach((points, username) => {console.log(`${username} 有 ${points} 分`);
});
// 输出:
// alice 有 120 分
// bob 有 85 分
// carol 有 200 分
注意:不能用 for...of + 回调函数替代 forEach
for...of 是语句,不是方法,不接受回调函数;而 forEach 是方法调用。两者目的相似但语法不同:
- ✅ 正确:
map.forEach(callback) - ❌ 错误:
for...of map.forEach(...)(语法错误) - ✅ 替代写法:
for (const [key, value] of map) { ... }(这是迭代器用法,不是回调)
和数组 forEach 的关键区别
别把 Map.prototype.forEach 和 Array.prototype.forEach 的参数记混:
- 数组:
(item, index, arr) - Map:
(value, key, map)—— 没有“索引”概念,只有键和值 - 所以想按插入顺序处理时,Map 的
forEach天然保持插入顺序,这点和 Set、Array 一致


















