このような連想配列のオブジェクトがあり、
"value3"というバリューの値から、"key3"というキーの値を取得する方法。
const obj = { key1: 'value1', key2: 'value2', key3: 'value3', key4: 'value4' };
いくつかの方法で取得できるので書いてみます。(記法はES6)
1:for文
2:filter
3:reduce
パッと思いつくこの3つ。
もし他にもあれば教えていただきたいです。
【1】for文で探す
let result = null; const keys = Object.keys(obj); for (let i = 0; i < keys.length; i++) { if (obj[keys[i]] === 'value3') { result = keys[i]; } } console.log(result); //key3
【2】filterを使う
const result = Object.keys(obj).filter( (key) => { return obj[key] === 'value3' }); console.log(result); //key3
【3】reduceを使う
const result = Object.keys(obj).reduce( (r, key) => { return obj[key] === 'value3' ? key : r }, null); console.log(result); //key3
filterとES6のアローファンクションを使えばとてもシンプルに取得することが出来ます。