javascriptの連想配列の値からキーを取得する方法



このような連想配列のオブジェクトがあり、
"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のアローファンクションを使えばとてもシンプルに取得することが出来ます。