JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで配列をN個のグループに分割する方法

概要

本記事では、数値の配列をN個のグループに分割するJavaScript関数の作成方法を解説します。ポイントは、各グループがサイズの大きい順から小さい順に並ぶように分割することです。

例えば、12個の数値からなる配列を5つの配列に分割する場合、結果は大きいグループから小さいグループへとできるだけ均等に分割される必要があります。

const arr = [1,2,3,4,5,6,7,8,9,10,11,12];
const output = [[1,2,3], [4,5,6], [7,8], [9,10], [11,12]];

この関数は、第一引数として元の配列を、第二引数として分割数(パーティション数)を受け取ります。

実装例

実際のコードは以下の通りです。

const arr = [1,2,3,4,5,6,7,8,9,10,11,12];
const chunkArray = (arr = [], chunkCount) => {
    const chunks = [];
    while(arr.length) {
        const chunkSize = Math.ceil(arr.length / chunkCount--);
        const chunk = arr.slice(0, chunkSize);
        chunks.push(chunk);
        arr = arr.slice(chunkSize);
    };
    return chunks;
};
console.log(chunkArray(arr, 5));

コードの解説

この関数がどのように動作するのか、処理の流れを確認しましょう。

  • Math.ceil(arr.length / chunkCount--):残りの要素数を残りのグループ数で割り、小数点以下を切り上げることで各チャンクのサイズを算出します。後置デクリメントにより、ループが1回回るごとにグループ数が1ずつ減少していきます。
  • arr.slice(0, chunkSize):元の配列の先頭から計算したサイズ分の要素を取り出し、新しいチャンク配列を作成します。
  • arr.slice(chunkSize):残りの要素だけで新しい配列を生成し、whileループの継続条件として利用します。すべての要素が処理されると配列が空になり、ループが終了します。

先頭のグループほど多くの要素が割り当てられる仕組みになっているため、結果は自然と大きいグループから小さいグループの順に並びます。

出力結果

上記のコードを実行すると、コンソールには以下のように出力されます。

[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8 ], [ 9, 10 ], [ 11, 12 ] ]

期待どおり、12個の要素が5つのグループに均等かつ降順サイズで分割されていることが確認できます。この手法は、ページネーションやデータの分散処理など、さまざまな場面で応用できます。

  1. JavaScriptで配列の任意の位置に要素を挿入する方法(push・unshift・splice)

    JavaScriptで配列に要素を追加する場合、挿入する位置によって使い分けられる便利なメソッドが3つあります。 push():配列の末尾に要素を追加する unshift():配列の先頭に要素を追加する splice():配列の任意のインデックス(途中の位置)に要素を挿入する それぞれのメソッドについて、具体的なコード例を見ていきましょう。 1. push() — 配列の末尾に追加する push() メソッドは、引数に渡した要素を配列の最後尾に追加します。複数の要素を一度に渡すことも可能です。 コード例 let arr = [test, 1, 2, hello, 23.5]; arr.pu

  2. JavaScriptの基本配列メソッド解説!push・pop・shift・unshift・spliceの使い方を実例付きで紹介

    JavaScriptには、配列を操作するための便利な組み込みメソッドが数多く用意されています。その中でも特によく使われるのが、要素の追加や削除を行う以下の5つの基本メソッドです。 JavaScriptの主要な配列メソッド一覧 メソッド説明 Array.push()配列の末尾に要素を追加します。 Array.pop()配列の末尾から要素を取り除きます。 Array.unshift()配列の先頭に要素を追加します。 Array.shift()配列の先頭から要素を取り除きます。 Array.splice()配列内の任意の位置で要素の追加・削除を行います。 これらのメソッドは、配列の