[JavaScript]find()でMap(マップ)の値からキーを取得するには?

JavaScript

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

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

スポンサーリンク

方法

find()を使ってMap(マップ)の値(value)からキー(key)を取得するには、配列を使います。

まず、Mapをスプレッド構文で配列に変換します。

変換した配列からfind()を呼び出します。

find()の引数に「([key, value]) => value == x」(x=対象の値)を指定します。

そして、find()の結果のインデックス「0」にアクセスします。

//map=対象のマップ, x=対象の値
let key = [...map].find(([key, value]) => value == x)[0];

上記のfind()のインデックス「0」にアクセスすることで、Mapの値からキーを取得できます。

使用例

function getKey(map, x) {
    return [...map].find(([key, value]) => value == x)[0];
}

const nums = new Map();
nums.set("one", 1);
nums.set("two", 2);
nums.set("three", 3);
nums.set("four", 4);
nums.set("five", 5);

console.log(getKey(nums, 1));
console.log(getKey(nums, 4));
console.log(getKey(nums, 5));
出力:
one
four
five

コメント

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