【JavaScript】自分なりのワンライナー(配列操作)
過去に書いた上記記事で、配列の分割をワンライナーで載せましたが、そうじゃない書き方をしたかったので書きました。
それだけじゃつまらないので後方から分割するものも書いてみました。
**(追記)**ご指摘がありました、第2引数検査を追加しました。
#コード(前方から)
const splitArray = (arr, n = 1) => {
if (!Number.isFinite(n) || n < 1) return arr; //追記
const result = new Array();
for (let i = 0, len = arr.length; i < len; i += n) {
result.push( arr.slice(i, i + n) );
}
//n個未満の配列を除外したい時に追加
//if (result.slice(-1)[0].length < n) result.pop();
return result;
};
const array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log ( splitArray(array, 3) ); //[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]
console.log ( splitArray(array, 4) ); //[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9]]
#コード(後方から)
const splitArrayBack = (arr, n = 1) => {
if (!Number.isFinite(n) || n < 1) return arr; //追記
const result = new Array();
for (let i = arr.length, len = i + n; i > 0; i -= n) {
result.unshift( arr.slice(i - len, i) );
}
//n個未満の配列を除外したい時に追加
//if (result[0].length < n) result.shift();
return result;
};
const array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log ( splitArrayBack(array, 3) ); //[[0], [1, 2, 3], [4, 5, 6], [7, 8, 9]]
console.log ( splitArrayBack(array, 4) ); //[[0, 1], [2, 3, 4, 5], [6, 7, 8, 9]]