配列を指定数に分割
配列を指定数に分割するには、次のような方法で可能です。
関数定義
ここでは汎用的に使いやすいように関数で定義します。
JavaScript
/**
* 配列を分割
* @param {any[]} arr 分割する配列
* @param {number} [num=1] 分割する数
* @return {any[][]} 分割された配列を返す
*/
var splitArray = function(arr, num) {
var newI = 0;
if (typeof num !== 'number') num = 1;
return arr.reduce(function(data, val, i) {
if (!data[newI]) data[newI] = [];
data[newI].push(val);
if ((i + 1) % num === 0) newI++;
return data;
}, []);
};
array.reduce
メソッドで配列を栗菓子処理します。
分割用のインデックス番号を用意し新しい配列をそのインデックス番号を使って作成します。
現在の値を新しい配列にarray.push
メソッドで追加していきます。
剰余演算子を使用してインデックス番号と区切り数を比較し、0になった場合に分割用のインデックス番号を1つ加算し次の区切りとします。
使い方
引数
引数名 | 型 | 初期値 | 説明 | |
---|---|---|---|---|
第一引数 必須 |
arr | any[] | 分割する配列 | |
第二引数 | num | number | 0 | 分割する数 |
戻り値
分割された配列を多次元配列で返します。
サンプルコード
JavaScript
// 数の指定なし(1つずつ)
console.log(splitArray(['a', 'b', 'c', 'd', 'e']));
// 2つ区切り
console.log(splitArray(['a', 'b', 'c', 'd', 'e'], 2));