JavaScript中遍历Map键值对最推荐用for...of配合entries()方法,也可用keys()/values()分别遍历键或值、forEach()回调遍历、或转为数组后处理。

JavaScript 中遍历 Map 的键值对有多种方式,最常用且推荐的是使用 for...of 循环配合 entries() 方法,也可以分别遍历键或值,或用 forEach()。
用 for...of 遍历键值对(推荐)
Map.prototype.entries() 返回一个可迭代对象,每个元素是一个 [key, value] 数组:
const myMap = new Map([['a', 1], ['b', 2], ['c', 3]]);
for (const [key, value] of myMap.entries()) {
console.log(key, value); // 'a' 1, 'b' 2, 'c' 3
}
注意:myMap.entries() 可简写为 myMap,因为 Map 默认迭代器就是 entries():
for (const [key, value] of myMap) {
console.log(key, value);
}
只遍历键或只遍历值
用 keys() 或 values() 方法获取对应迭代器:
立即学习“Java免费学习笔记(深入)”;
-
myMap.keys()→ 遍历所有键 -
myMap.values()→ 遍历所有值
// 只取键
for (const key of myMap.keys()) {
console.log(key); // 'a', 'b', 'c'
}
// 只取值
for (const value of myMap.values()) {
console.log(value); // 1, 2, 3
}
用 forEach 遍历键值对
Map.prototype.forEach() 接收一个回调函数,参数依次是 value、key、map:
myMap.forEach((value, key) => {
console.log(key, value);
});
这个顺序和数组的 forEach 不同(数组是 item, index),Map 是 value, key,别记反。
转成数组后处理(适合需要 filter/map 等操作时)
用 Array.from() 或展开运算符 [...myMap] 转为二维数组:
const arr = [...myMap]; // [['a', 1], ['b', 2], ['c', 3]] arr.forEach(([key, value]) => console.log(key, value)); // 或筛选出 value > 1 的项 const filtered = Array.from(myMap).filter(([, v]) => v > 1);


















