JavaScript入門 配列をいくつかの塊に分けてみよう

今回やりたいことは以下のような配列を
[1,2,3,4,5,6,7,8,9]
以下のように加工することです。
[[1, 2], [3, 4], [5, 6], [7, 8], [9]]
いくつの塊にわけるかは引数で指定できると良いです。上記の場合2です。
一例
const chunkArray = (arr, chunkSize) => {
const result = [];
while(arr.length) {
result.push(arr.splice(0, chunkSize));
}
return result;
};
const arr = [1,2,3,4,5,6,7,8,9];
const chunk = chunkArray(arr, 2);
console.log(chunk); // [[1, 2], [3, 4], [5, 6], [7, 8], [9]]
console.log(arr); // []
Array.prototype.splice を使って、chunkSize で指定された長さを切り取り、それを result に push します。
arr.length が 0 になったらループを抜けます。
このコードで注意が必要なのは、元のarrが変化してしまっていることです。(上のコードの場合 arr.splice にしてしまうと無限ループになるので注意)
Array.from を使うやり方の場合
const chunkArray = (arr, chunkSize) => {
return Array.from({length: Math.ceil(arr.length / chunkSize)}, (_, i) =>
arr.slice(i * chunkSize, i * chunkSize + chunkSize)
);
};
const arr = [1,2,3,4,5,6,7,8,9];
const chunk = chunkArray(arr, 2);
最近のコメント