関数の引数を並び替える

Beginner

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

はじめに

この実験では、JavaScript の rearg 関数を調べます。この関数を使うと、指定されたインデックスに基づいて関数に渡される引数の順序を並び替えることができます。Array.prototype.map() メソッドとスプレッド演算子を使って引数を変換し、並び替えられた引数で元の関数を呼び出す方法を学びます。この実験が終わるとき、JavaScript で rearg 関数を使って関数の引数を操作する方法を十分に理解しているようになります。

JavaScript で関数の引数を並び替える方法

JavaScript で関数の引数を並び替えるには、rearg() 関数を使うことができます。まず、指定されたインデックスに従って引数を並べ替えて提供された関数を呼び出す関数を作成します。Array.prototype.map() を使って、indexes に基づいて引数の順序を並び替えることができます。そして、スプレッド演算子 (...) を使って、変換された引数を fn に渡します。

以下は、rearg() 関数を使う方法の例です。

const rearg =
  (fn, indexes) =>
  (...args) =>
    fn(...indexes.map((i) => args[i]));

この例では、rearg() を使って、別の関数の引数を並び替える新しい関数を作成しています。

var rearged = rearg(
  function (a, b, c) {
    return [a, b, c];
  },
  [2, 0, 1]
);
rearged("b", "c", "a"); // ['a', 'b', 'c']

上記のコードでは、function(a, b, c) { return [a, b, c]; } 関数の引数を並び替える新しい関数 rearged を作成しています。indexes 引数は、引数を並び替える順序を指定します。この場合、3 番目の引数が最初に、1 番目の引数が 2 番目に、2 番目の引数が 3 番目に来るようにします。rearged('b', 'c', 'a') を呼び出すと、['a', 'b', 'c'] が返され、これは並び替えられた引数で元の関数を呼び出した結果です。

まとめ

おめでとうございます!関数の引数を並び替える実験を完了しました。技術力を向上させるために、LabEx でさらに実験を行って練習してください。