[TypeScript]filter()でMap(マップ)の値からキーを検索して取得するには?

TypeScript

どうも、ちょげ(@chogetarou)です。

filter()を使ってMap(マップ)の値(value)からキー(key)を検索して取得する方法を紹介します。

スポンサーリンク

方法

filter()を使ってMap(マップ)の値(value)からキー(key)を検索して取得するには、keys()を使います。

まず、Map(マップ)からkeys()を呼び出し、keys()の結果を配列に変換します。

keys()の結果を変換した配列からfilter()を呼び出し、filter()の引数に1つの引数を持つ関数を指定します。

関数で、「Mapの引数のキーにアクセスした結果」と「検索対象の値」が等しい時にtrueとなる条件式を返します。

//map(対象のマップ)のvalue(検索対象)からキーを検索して取得
let result = [...map.keys()].filter((key) => map.get(key) == value);

上記のfilter()は、Map(マップ)の値からキーを検索して、そのキーを全て配列として取得します。

使用例

const nums = new Map<string, number>();
nums.set("one", 1);
nums.set("two", 2);
nums.set("three", 3);
nums.set("four", 4);
nums.set("さん", 3);
nums.set("five", 5);

let result = [...nums.keys()].filter((key) => nums.get(key) == 3);

console.log(result);
出力:
[LOG]: ["three", "さん"] 

コメント

タイトルとURLをコピーしました