Skip to content

rearg (Lodash 互換性)

アロー関数を使用してください

この rearg 関数は、引数の順序を並び替える複雑なラッパーを作成するため、動作が遅くなります。アロー関数を使用して引数の順序を直接並び替えると、より明確で高速なコードを書くことができます。

代わりに、より高速で現代的なアロー関数を使用してください。

関数の引数を指定した順序で並び替える新しい関数を作成します。

typescript
const rearranged = rearg(func, ...indices);

参照

rearg(func, ...indices)

関数を呼び出すときに引数の順序を変更したい場合は、rearg を使用してください。指定されたインデックスの順序で引数を並び替えて、元の関数を呼び出します。

typescript
import { rearg } from 'es-toolkit/compat';

const greet = (greeting, name) => `${greeting}, ${name}!`;

// 引数の順序を入れ替える(1番目、0番目)
const rearrangedGreet = rearg(greet, 1, 0);
rearrangedGreet('World', 'Hello');
// 戻り値: "Hello, World!"

// 元の関数はそのまま
greet('Hello', 'World');
// 戻り値: "Hello, World!"

配列でインデックスを渡すこともできます。

typescript
import { rearg } from 'es-toolkit/compat';

const fn = (a, b, c) => [a, b, c];

// 配列でインデックスを指定
const rearranged = rearg(fn, [2, 0, 1]);
rearranged('a', 'b', 'c');
// 戻り値: ['c', 'a', 'b']

一部の引数のみを並び替えて、残りはそのままにすることができます。

typescript
import { rearg } from 'es-toolkit/compat';

const fn = (a, b, c, d) => [a, b, c, d];

// 最初の2つの引数のみを並び替え
const rearranged = rearg(fn, 1, 0);
rearranged('first', 'second', 'third', 'fourth');
// 戻り値: ['second', 'first', 'third', 'fourth']

存在しないインデックスは undefined として処理されます。

typescript
import { rearg } from 'es-toolkit/compat';

const fn = (a, b, c) => [a, b, c];

// 存在しないインデックス5を含む
const rearranged = rearg(fn, 5, 1, 0);
rearranged('a', 'b', 'c');
// 戻り値: [undefined, 'b', 'a']

ネストされた配列も平坦化して処理されます。

typescript
import { rearg } from 'es-toolkit/compat';

const fn = (a, b, c, d) => [a, b, c, d];

// ネストされた配列インデックス
const rearranged = rearg(fn, [1, [2, 0]], 3);
rearranged('a', 'b', 'c', 'd');
// 戻り値: ['b', 'c', 'a', 'd']

パラメータ

  • func ((...args: any[]) => any): 引数の順序を並び替える関数です。
  • ...indices (Array<number | number[]>): 並び替える引数のインデックスです。ネストされた配列もサポートされています。

戻り値

((...args: any[]) => any): 引数の順序が並び替えられた新しい関数を返します。

MIT ライセンスの下で配布されています。