JavaScript:オブジェクトのバリューからキーを取得する関数

JavaScript:オブジェクトのバリューからキーを取得する関数

オブジェクトのバリューからキーを取得したいというシチュエーションはたまに発生しますね。

例えば、以下のようなオブジェクトがあったとして、

const fruit = {
  apple: "red",
  grape: "purple",
  lemon: "yellow",
};

red と指定して apple を取得したい、みたいに。

そこまで難しい処理でもありませんが、ご参考までにここに記載しておきます。

JavaScript 版と TypeScript 版の両方を記載しておくので、お好きな方をお使いください。

JavaScript #

const getKeyFromValue = (object, value) => {
  return Object.keys(object).find((key) => object[key] === value);
};

TypeScript #

const getKeyFromValue = <T extends Record<string, unknown>>(
  object: T,
  value: T[keyof T],
): keyof T | undefined => {
  return Object.keys(object).find((key) => object[key] === value);
};

実行結果 #

ヒットしなかった場合は undefined が返ります。

getKeyFromValue(fruit, "red"); // 'apple'
getKeyFromValue(fruit, "blue"); // undefined