← 返回首页
Map.prototype[Symbol.iterator]() - JavaScript | MDN

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Map.prototype[Symbol.iterator]()

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2016年9月以降、すべてのブラウザーで利用可能です。

[Symbol.iterator]()Map インスタンスのメソッドで、反復可能プロトコルを実装し、対応表 (Map) オブジェクトを、反復可能プロトコルを受け入れるほとんどの構文、たとえばスプレッド構文for...of ループなどで使用できるようにします。この対応表のキーと値のペアを挿入順に返す対応表イテレーターオブジェクトを返します。

初期値は、 Map.prototype.entries メソッドの初期値と同じ関数オブジェクトです。

目次

試してみましょう

const map = new Map(); map.set("0", "foo"); map.set(1, "bar"); const iterator = map[Symbol.iterator](); for (const item of iterator) { console.log(item); } // 予想される結果: Array ["0", "foo"] // 予想される結果: Array [1, "bar"]

構文

js
map[Symbol.iterator]()

引数

なし。

返値

返値は Map.prototype.entries() と同じです。この対応表のキーと値のペアを生成する新しい反復可能なイテレーターオブジェクトを返します。

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

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-map.prototype-%symbol.iterator%

ブラウザーの互換性

ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。

関連情報