This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Map.prototype[@@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 객체의@@iterator 메서드는반복가능 프로토콜을 구현하여전개 구문와for...of 루프같은반복이 필요한 대부분의 구문에서 맵을 사용할 수 있게 합니다. 맵의 키-값 쌍을 생성하는 반복자를 반환합니다.
이 속성의 초기 값은Map.prototype.entries 속성의 초기 값과 동일한 함수 객체입니다.
In this article
시도해 보기
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()과 동일한 반환 값을 반환합니다. 이는 맵의 키-값 쌍을 생성하는새로운 반복자 객체입니다.
예제
>for...of 루프를 사용한 반복
이 메서드를 직접 호출할 필요는 거의 없다는 점을 명심하시기 바랍니다.@@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%> |