pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map/Symbol.iterator

href="https://developer.mozilla.org/favicon.ico" />

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Map.prototype[Symbol.iterator]()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016年9月.

Map 实例的 [Symbol.iterator]() 方法实现了可迭代协议以允许 Map 对象被大多数语法所接受,例如展开语法for...of 循环。它返回一个 map 迭代器对象,此对象会以插入顺序生成 map 的键值对。

该属性的初始值与 Map.prototype.entries 属性的初始值是同一个函数对象。

尝试一下

const map1 = new Map();

map1.set("0", "foo");
map1.set(1, "bar");

const iterator1 = map1[Symbol.iterator]();

for (const item of iterator1) {
  console.log(item);
}
// Expected output: Array ["0", "foo"]
// Expected output: Array [1, "bar"]

语法

js
map[Symbol.iterator]()

参数

无。

返回值

Map.prototype.entries() 返回值相同:一个新的迭代器对象,它会以插入顺序生成 map 的键值对。

示例

使用 for...of 循环进行迭代

请注意,通常你不需要直接调用此方法。[Symbol.iterator]() 方法的存在使得 Map 对象可迭代,而像 for...of 循环这样的迭代语法会自动调用此方法以获取用于循环的迭代器。

js
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

for (const entry of myMap) {
  console.log(entry);
}
// ["0", "foo"]
// [1, "bar"]
// [{}, "baz"]

for (const [key, value] of myMap) {
  console.log(`${key}: ${value}`);
}
// 0: foo
// 1: bar
// [Object]: baz

手动控制迭代器

你仍然可以手动调用返回的迭代器对象的 next() 方法来获得最大程度的控制权。

js
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

const mapIter = myMap[Symbol.iterator]();

console.log(mapIter.next().value); // ["0", "foo"]
console.log(mapIter.next().value); // [1, "bar"]
console.log(mapIter.next().value); // [Object, "baz"]

规范

Specification
ECMAScript® 2026 Language Specification
# sec-map.prototype-%symbol.iterator%

浏览器兼容性

参见

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy