関数に基づいた配列の分割

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、JavaScript で与えられたフィルタ関数に基づいて配列を分割する方法を探ります。フィルタ関数が真値を返すかどうかに基づいて、Array.prototype.reduce() メソッドと Array.prototype.push() メソッドを使って配列の値を 2 つのグループに分割します。この実験は、JavaScript の高階関数と配列操作の理解を深めることを目的としています。

配列を 2 つのグループに分割する関数

与えられた関数の結果に基づいて配列を 2 つのグループに分割するには、次の手順に従います。

  1. ターミナル/SSH を開き、コーディングの練習を始めるために node と入力します。
  2. Array.prototype.reduce()Array.prototype.push() メソッドを使って要素をグループに追加します。これは、各要素に対する与えられた関数 fn が返す値に基づいて行われます。
  3. fn がどの要素に対しても真値を返す場合は、それを最初のグループに追加します。そうでない場合は、2 番目のグループに追加します。

以下がコードです。

const bifurcateBy = (arr, fn) =>
  arr.reduce(
    (acc, val, i) => (acc[fn(val, i) ? 0 : 1].push(val), acc),
    [[], []]
  );

たとえば、bifurcateBy(['beep', 'boop', 'foo', 'bar'], x => x[0] === 'b') を呼び出すと、この関数は [ ['beep', 'boop', 'bar'], ['foo'] ] を返します。

まとめ

おめでとうございます!関数に基づいた配列の分割の実験を完了しました。技術力を向上させるために、LabEx でさらに実験を行って練習してください。