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

View in English Always switch to English

Iterator.prototype.chunks()

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

chunks()Iterator インスタンスのメソッドで、元のイテレーターから要素を連続した配列のチャンクに分割する新しいイテレーターヘルパーオブジェクトを返します。このヘルパーオブジェクトが反復処理されるたびに、基盤となるイテレーターから指定された数の要素を取得し、それらをまとめて返します。

重複するシーケンス(すなわち、移動ウィンドウ)を生成するには、Iterator.prototype.windows() を参照してください。

構文

js
chunks(chunkSize)

引数

chunkSize

それぞれのチャンクに含まれる要素の数。232(配列の最大長)未満の正の整数でなければなりません。

返値

新しいイテレーターヘルパーオブジェクトです。返されたイテレーターヘルパーの next() メソッドが呼び出されるたびに、元のイテレーターが chunkSize 個の要素分進められ、それらの要素が配列としてまとめて返されます。

元のイテレーターに要素が残っていても、その数が chunkSize より少ない場合、それらの要素が配列として返されます(したがって、長さは chunkSize より短くなります)。そして、次に next() が呼び出された時点で、イテレーターヘルパーは直ちに完了します。

元のイテレーターに要素が残っていない場合、イテレーターヘルパーは空の配列を返すことなく、直ちに完了します。

例外

TypeError

chunkSize が整数でない場合に発生します。

RangeError

chunkSize が 1 未満、または 232-1 より大きい場合に発生します。

グリッド内への要素の表示

次の例では、フィボナッチ数列の項を返すイテレーターを生成します。その後、毎回 5 つの要素ずつ取得して、グリッドレイアウトで表示します。

js
function* fibonacci() {
  let current = 1;
  let next = 1;
  while (true) {
    yield current;
    [current, next] = [next, current + next];
  }
}

const rows = fibonacci().chunks(5);

for (const row of rows.take(5)) {
  console.log(row.join("\t"));
}

出力結果:

1       1       2       3       5
8       13      21      34      55
89      144     233     377     610
987     1597    2584    4181    6765
10946   17711   28657   46368   75025

仕様書

仕様書
Iterator Chunking
# sec-iterator.prototype.chunks

ブラウザーの互換性

関連情報