Skip to content

invokeMap

INFO

この関数は互換性のために es-toolkit/compat からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。

es-toolkit/compat からこの関数をインポートすると、lodash と完全に同じように動作します。

コレクションの各要素の path にあるメソッドを呼び出し、呼び出された各メソッドの結果を配列として返します。追加の引数は、呼び出される各メソッドに渡されます。path が関数の場合、コレクションの各要素に対して呼び出され、this が各要素にバインドされます。

インターフェース

typescript
function invokeMap<T, R>(
  collection: T[] | Record<string, T> | null | undefined,
  path: PropertyKey | PropertyKey[] | ((this: T, ...args: any[]) => R),
  ...args: unknown[]
): Array<R | undefined>;

パラメータ

  • collection (T[] | Record<string, T> | null | undefined): 反復処理するコレクションです。
  • path (PropertyKey | PropertyKey[] | ((this: T, ...args: any[]) => R)): 呼び出すメソッドのパス(文字列、数値、シンボル、またはこれらの配列)または呼び出す関数です。
  • args (...unknown[]): 各メソッドを呼び出す際に渡す引数です。

戻り値

(Array<R | undefined>): 結果の配列を返します。パスが見つからないか、メソッドの呼び出し結果が undefined の場合、その要素は undefined となります。

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

// 各要素のメソッドを呼び出す
invokeMap(['a', 'b', 'c'], 'toUpperCase');
// => ['A', 'B', 'C']

// 引数付きでメソッドを呼び出す
invokeMap(
  [
    [5, 1, 7],
    [3, 2, 1],
  ],
  'sort'
);
// => [[1, 5, 7], [1, 2, 3]]

// オブジェクトの各値に対してメソッドを呼び出す
invokeMap({ a: 1, b: 2, c: 3 }, 'toFixed', 1);
// => ['1.0', '2.0', '3.0']

// メソッド名の代わりに関数を使用する
invokeMap(
  ['a', 'b', 'c'],
  function (this: string, prefix: string, suffix: string) {
    return prefix + this.toUpperCase() + suffix;
  },
  '(',
  ')'
);
// => ['(A)', '(B)', '(C)']

invokeMap([123, 456], String.prototype.split, '');
// => [['1', '2', '3'], ['4', '5', '6']]

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