• Skip to main content
  • Skip to search
  • Skip to select language
HTML

Structure of content on the web

  • Web APIs

    Interfaces for building web applications

  • Learn
    • CSS

      Learn to style content using CSS

    • Overview

      A customized MDN experience

    • FAQ

      Frequently asked questions about MDN Plus

  • HTTP Observatory

    Scan a website for free

  • JavaScript
  • Map.prototype[Symbol.iterator]()
      • Deutsch
      • Español
      • Français
      • 日本語
      • 한국어
      • Português (do Brasil)
      • 中文 (简体)

    In this article

    • Try it
    • Syntax
    • Examples
    • Specifications
    • Browser compatibility
    • See also
    1. Map.groupBy()
  • Static properties
    1. Map.prototype.entries()
    2. Map.prototype.keys()
    3. Map.prototype.size
  • Inheritance
  • Function.prototype.call()
  • Function: displayName Non-standard
  • Function.prototype.arguments Non-standard Deprecated
  • Function.prototype.caller Non-standard Deprecated
  • Instance methods
    1. Object.prototype.__defineGetter__() Deprecated
    2. Object.prototype.__defineSetter__() Deprecated
    3. Object.prototype.__lookupGetter__() Deprecated
    4. Object.prototype.__lookupSetter__() Deprecated
    5. Object.prototype.toLocaleString()
    6. Object.prototype.__proto__ Deprecated
    7. iterable protocol and allows Map objects to be consumed by most syntaxes expecting iterables, such as the map iterator object that yields the key-value pairs of the map in insertion order.

      The initial value of this property is the same function object as the initial value of the Map.prototype.entries property.

  • Try it

    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"]
    

    Syntax

    js
    map[Symbol.iterator]()
    

    Parameters

    None.

    Return value

    The same return value as iterable, and iterating syntaxes like the for...of loop automatically call this method to obtain the iterator to loop over.

    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
    

    Manually hand-rolling the iterator

    You may still manually call the next() method of the returned iterator object to achieve maximum control over the iteration process.

    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"]
    

    Specifications

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

    Browser compatibility

    See also

    • Map
    • Map.prototype.entries()
    • Map.prototype.keys()
    • Map.prototype.values()
    • Symbol.iterator
    • Iteration protocols

    Help improve MDN

    Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

    Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant