JavaScript:オブジェクトのバリューからキーを取得する関数
December 5, 2021
オブジェクトのバリューからキーを取得したいというシチュエーションはたまに発生しますね。
例えば、以下のようなオブジェクトがあったとして、
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