.NET 8以降で使えるEnumerable.Chunk()のように、JavaScriptでデータのチャンク化を行う方法。ジェネレータを使ってEnumrableのような遅延評価もできます。
サンプルソースコード
通常版:
function chunk(array, chunkSize) {
const result = [];
for (let i = 0; i < array.length; i += chunkSize) {
result.push(array.slice(i, i + chunkSize));
}
return result;
}
遅延評価(ジェネレータ)版:
function* chunk(array, chunkSize) {
for (let i = 0; i < array.length; i += chunkSize) {
yield array.slice(i, i + chunkSize);
}
}
使い方
通常版:
const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const chunked = chunk(array, 4);
console.log(chunked);
遅延評価(ジェネレータ)版:
const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
for (let part of chunk(array, 2)) {
console.log(part);
}
出力結果
チャンクサイズが2のとき:
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
チャンクサイズが4のとき:
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]
以上です。