はじめに
この実験では、JavaScript を使って、提供された関数に基づいて配列を分割する方法を探ります。提供された関数の出力の変化をチェックしながら、分割された値を配列に蓄積するために Array.prototype.reduce() メソッドを使用します。この実験が終了するとき、JavaScript で配列を分割する方法を十分に理解していることになります。
配列を分割するアルゴリズム
配列を分割するには、次の手順に従います。
- ターミナル/SSH を開き、コーディングを練習するために
nodeと入力します。 - 与えられた配列
arrの各値に対して、提供された関数fnを適用します。 fnが新しい値を返すたびに、配列を分割します。Array.prototype.reduce()を使用して、結果の配列とfnから返された最後の値を保持する累積オブジェクトを作成します。Array.prototype.push()を使用して、arrの各値を累積配列の適切なパーティションに追加します。- 結果の配列を返します。
以下はコードの実装です。
const partitionBy = (arr, fn) =>
arr.reduce(
({ res, last }, v, i, a) => {
const next = fn(v, i, a);
if (next !== last) res.push([v]);
else res[res.length - 1].push(v);
return { res, last: next };
},
{ res: [] }
).res;
使用例:
const numbers = [1, 1, 3, 3, 4, 5, 5, 5];
partitionBy(numbers, (n) => n % 2 === 0); // [[1, 1, 3, 3], [4], [5, 5, 5]]
partitionBy(numbers, (n) => n); // [[1, 1], [3, 3], [4], [5, 5, 5]]
まとめ
おめでとうございます!配列を分割する実験を完了しました。技術力を向上させるために、LabEx でさらに実験を行って練習してください。