12章イテレータとジェネレータ
反復可能なオブジェクトとイテレータはES6の機能です。本書では、これまで何度も紹介してきました。型付き配列を含めて、配列は反復可能です。同じように、文字列やSetオブジェクト、Mapオブジェクトも反復可能です。つまり、§5.4.4で説明したように、これらのデータ構造の内容は、for/of
ループを使って反復(巡回)することができます。
let sum = 0; for(let i of [1,2,3]) { // 値ごとに1度ループする。 sum += i; } sum // => 6
また、§7.1.2で説明したように、反復可能なオブジェクトは、...
演算子を使って、配列の初期化や関数呼び出しの際に展開できます。この展開を行うときにもイテレータが使われます。
let chars = [..."abcd"]; // chars == ["a", "b", "c", "d"] let data = [1, 2, 3, 4, 5]; Math.max(...data) // => 5
イテレータは分割代入でも使われます。
let purpleHaze = Uint8Array.of(255, 0, 255, 128); let [r, g, b, a] = purpleHaze; // a == 128
Mapオブジェクトを反復する場合、戻り値は[キー, 値]
ペアになります。つまり、for/of
ループ中で分割代入を行うことができます。
let m = new Map([["one", 1], ["two", 2]]); for(let [k,v] of m) console.log(k, v); // 「one 1」、「two 2」とログに記録。 ...
Get JavaScript 第7版 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.