JavaScript 中的 `Map` 对象是一种集合结构,它存储键值对,并且能够记住键的原始插入顺序。遍历 `Map` 对象有多种方式,可以根据需要选择不同的方法来提取键、值或键值对。
1. 使用 `forEach` 方法
`Map` 对象提供了一个 `forEach` 方法,你可以使用它来遍历 Map 中的每个元素。
const myMap = new Map();
myMap.set('a', 1);
myMap.set('b', 2);
myMap.set('c', 3);
myMap.forEach((value, key) => {
console.log(`Key: ${key}, Value: ${value}`);
});
2. 使用 `for…of` 循环和 `Map.prototype.entries()`
`Map.prototype.entries()` 方法返回一个新的迭代器对象,它按插入顺序包含了 Map 对象中每个元素的 `[key, value]` 数组。
const myMap = new Map();
myMap.set('a', 1);
myMap.set('b', 2);
myMap.set('c', 3);
for (const [key, value] of myMap.entries()) {
console.log(`Key: ${key}, Value: ${value}`);
}
3. 使用 `for…of` 循环直接遍历
由于 `Map` 对象是可迭代的,你也可以直接使用 `for…of` 循环来遍历。
const myMap = new Map();
myMap.set('a', 1);
myMap.set('b', 2);
myMap.set('c', 3);
for (const [key, value] of myMap) {
console.log(`Key: ${key}, Value: ${value}`);
}
4. 使用 `for…of` 循环和 `Map.prototype.keys()` 或 `Map.prototype.values()`
如果你只对键或值感兴趣,你可以使用 `Map.prototype.keys()` 或 `Map.prototype.values()`。
// 只遍历键
for (const key of myMap.keys()) {
console.log(`Key: ${key}`);
}
// 只遍历值
for (const value of myMap.values()) {
console.log(`Value: ${value}`);
}
5. 使用 `Iterator` 对象
你也可以使用迭代器对象的 `next()` 方法手动遍历。
const iterator = myMap[Symbol.iterator]();
let result = iterator.next();
while (!result.done) {
console.log(`Key: ${result.value[0]}, Value: ${result.value[1]}`);
result = iterator.next();
}
这些是遍历 Map 对象的常用方法,每种方法都有其特定的用途场景。作为前端程序员,了解这些方法可以帮助你根据不同的需求,选择最合适的遍历方式。