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

JavaScriptで配列をN個の部分配列(チャンク)に分割する方法

JavaScriptで配列をN個の部分配列(チャンク)に分割する方法

JavaScriptでは、リテラルを格納した配列と数値nを受け取り、元の配列をn個の部分配列(チャンク)に分割した新しい配列を返す関数を実装したい場面があります。なお、nは必ず配列の長さ以下であると仮定します。

入力例

たとえば、入力配列が以下の場合を考えてみましょう。

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

期待される出力

この場合、出力は次のようになります。

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

実装コード

この処理を実現するコードは以下のとおりです。

const arr = [1,2,3,4,5,6,7,8,9,10];
const n = 3;
const divideIntoChunks = (arr, count) => {
    const res = [];
    const size = arr.length / count;
    let ind = 0;
    while (ind < arr.length) {
        res.push(arr.slice(ind, ind += size));
    };
    return res;
};
console.log(divideIntoChunks(arr, n));

コードの解説

まず、配列の長さ ÷ チャンク数で1つのチャンクに含まれる要素数を算出します。上の例では 10 ÷ 3 = 3.33… となります。

次に、whileループで配列の先頭から順にslice()メソッドを使って要素を切り出し、結果配列に追加していきます。slice()の終了位置に「現在のインデックス+チャンクサイズ」を指定しているため、ループが進むごとに切り出し範囲が自動的に移動します。

要素数がチャンク数で割り切れない場合は、余りの要素がすべて最後のチャンクにまとめられます。そのため、上記の例では3つ目のチャンクに4つの要素が含まれています。

実行結果

コンソールには以下のように出力されます。

[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9, 10 ] ]
  1. JavaScriptで配列を指定した個数のサブ配列に分割(チャンク化)する方法

    JavaScriptでは、数値の配列を第1引数として受け取り、単一の数値 num を第2引数として受け取る関数を実装する必要があります。ここで num は常に配列の長さ以下であるものとします。この関数の役割は、num 個のサブ配列を含む新しい配列を生成することです。元の配列の長さが num でちょうど割り切れる場合、すべてのサブ配列は同じ要素数を持ちます。割り切れない場合は、最後のサブ配列だけが異なる要素数になります。入力例と期待される出力たとえば、入力が以下のようなケースを考えてみましょう。const arr = [1, 2, 3, 4, 5, 6, 7, 8]; const num = 3

  2. JavaScriptで文字列配列内の各単語の出現回数を正確に数える方法

    JavaScriptでは、2つの文字列配列を扱う場面があります。1つは単語のリストを表し、もう1つは複数の文を表すものです。例えば、以下のような配列を考えてみましょう。const names= [jhon, parker]; const sentences = [hello jhon, hello parker and parker, jhonny jhonny yes parker];要件ここで求められているのは、これら2つの文字列配列を引数として受け取るJavaScript関数を作成することです。この関数は、最初の names 配列に含まれる各文字列をキーとし、sentences 配列全体