[TypeScript]オブジェクト(Object)の値からキーを検索して取得するには?

TypeScript

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

オブジェクト(Object)の値(value)からキー(key)を検索して取得する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

オブジェクト(Object)の値(value)からキー(key)を検索して取得する方法は、3つあります。

find()

1つ目は、find()を使う方法です。

まず、Object.keys()を呼び出し、引数にオブジェクトを指定します。

Object.keys()からfind()を呼び出し、find()の引数に1つの引数を持つ関数を指定します。

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

//obj(対象のオブジェクト)のvalue(検索対象)からキーを検索して取得
let result = Object.keys(obj).find(key => obj[key] === value);

上記のfind()は、オブジェクト(Object)の値からキーを検索して、そのキーを取得します。

使用例

type Numbers = {
    [key: string]: number
}

const nums: Numbers = { 
    "one": 1, 
    "two": 2,
    "three": 3,
    "four": 4,
    "five": 5,
}

//3のキーを検索して取得
let result = Object.keys(nums).find(key => nums[key] === 3);

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

filter()

2つ目は、filter()を使う方法です。

まず、Object.keys()を呼び出し、引数にオブジェクトを指定します。

Object.keys()からfilter()を呼び出し、filter()の引数に1つの引数を持つ関数を指定します。

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

//obj(対象のオブジェクト)のvalue(検索対象)からキーを検索して取得
let result = Object.keys(obj).find(key => obj[key] === value);

上記のfind()は、オブジェクト(Object)の値からキーを検索して、そのキーを全て配列として取得します。

使用例

type Numbers = {
    [key: string]: number
}

const nums: Numbers = { 
    "one": 1, 
    "two": 2,
    "three": 3,
    "four": 4,
    "five": 5,
}

//3のキーを検索して取得
let result = Object.keys(nums).filter(key => nums[key] === 3);

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

ループ

3つ目は、ループを使う方法です。

まず、オブジェクト(Object)のキーをループします。

次に、if文で「オブジェクト[ループ変数] === 値」を条件に分岐します。

if文の処理で、条件を満たしたキーを取得します。

//obj=対象のオブジェクト, value=検索対象の値
let result = '';
for (const key in obj) {
    if (obj[key] === value) { //検索対象の値を検索
        result = key; //値からキーを取得
    }
}
//forEach()を使う場合
Object.keys(obj).forEach(function(key){
    if (obj[key] === value) {
        result = key;
    }
});

上記のループは、オブジェクト(Object)の値からキーを検索して、そのキーを取得します。

使用例

type Numbers = {
    [key: string]: number
}

const nums: Numbers = { 
    "one": 1, 
    "two": 2,
    "three": 3,
    "four": 4,
    "five": 5,
}

let result = '';
for (const key in nums) {
    if (nums[key] === 2) {
        result = key;
    }
}

console.log(result);
出力:
[LOG]: "two" 

まとめ

オブジェクト(Object)の値(value)からキー(key)を検索して取得する方法は、次の3つです。

  • find()を使う方法
    let result = Object.keys(obj).find(key => obj[key] === value);
  • filter()を使う方法
    let result = Object.keys(obj).find(key => obj[key] === value);
  • ループを使う方法

コメント

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