JavaScript Map 对象的遍历方法全解析 🗺️
Map 是 ES6 引入的新的数据结构,它类似于对象,但是"键"的范围不限于字符串,各种类型的值(包括对象)都可以当作键。本文将详细介绍 Map 的各种遍历方法。
1. forEach 遍历 🔄
最常用的遍历方法,通过回调函数遍历所有的键值对:
js
const map = new Map([
['name', '张三'],
['age', 25],
['job', '程序员']
]);
map.forEach((value, key, map) => {
console.log(`${key} = ${value}`);
// 输出:
// name = 张三
// age = 25
// job = 程序员
});⚠️ 注意事项:
- forEach 的回调函数参数顺序是 (value, key, map),这与数组的 forEach 不同
- 回调函数中的 this 可以通过 forEach 的第二个参数指定
2. for...of 遍历 🔁
for...of 是最灵活的遍历方式,提供了多种遍历选项:
js
const map = new Map([
['name', '张三'],
['age', 25]
]);
// 1. 遍历键值对
for (const [key, value] of map) {
console.log(`${key} = ${value}`);
}
// 2. 只遍历键
for (const key of map.keys()) {
console.log(key);
}
// 3. 只遍历值
for (const value of map.values()) {
console.log(value);
}3. entries() 遍历 📝
entries() 方法返回一个新的迭代器对象,包含 Map 对象中所有的键值对:
js
const map = new Map([
['name', '张三'],
['age', 25]
]);
for (const [key, value] of map.entries()) {
console.log(`${key} = ${value}`);
}4. 实用技巧 💡
转换为数组
js
const map = new Map([
['name', '张三'],
['age', 25]
]);
// 转换为键值对数组
const entries = [...map]; // 或 Array.from(map)
console.log(entries); // [['name', '张三'], ['age', 25]]
// 获取所有键
const keys = [...map.keys()];
// 获取所有值
const values = [...map.values()];Map 与对象的转换
js
// 对象转 Map
const obj = { name: '张三', age: 25 };
const map = new Map(Object.entries(obj));
// Map 转对象
const objFromMap = Object.fromEntries(map);性能考虑 ⚡
- forEach 方法在大多数情况下性能较好,是最常用的遍历方式
- for...of 循环可以通过 break 随时终止遍历,更加灵活
- 如果需要同时访问键和值,直接使用 for...of map 是最简洁的方式
最佳实践 ✨
- 需要遍历并执行操作,使用 forEach
- 需要中断遍历或更灵活的控制,使用 for...of
- 需要转换数据结构,考虑使用 entries()
- 只需要键或值,使用 keys() 或 values() 方法
希望这篇文章能帮助你更好地理解和使用 Map 的遍历方法!🎉