如何通过值获取 JavaScript 对象中的键?

新手上路,请多包涵

我有一个非常简单的 JavaScript 对象,我将其用作关联数组。是否有一个简单的函数允许我获取值的键,或者我必须迭代对象并手动找到它?

原文由 arik 发布,翻译遵循 CC BY-SA 3.0 许可协议

阅读 1k
2 个回答
function getKeyByValue(object, value) {
 return Object.keys(object).find(key => object[key] === value);
 }

ES6,没有原型突变或外部库。

例子,

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

 const map = {"first" : "1", "second" : "2"};
 console.log(getKeyByValue(map,"2"));

原文由 UncleLaz 发布,翻译遵循 CC BY-SA 4.0 许可协议

没有可用的标准方法。您需要迭代,您可以创建一个简单的帮助程序:

 Object.prototype.getKeyByValue = function( value ) {
    for( var prop in this ) {
        if( this.hasOwnProperty( prop ) ) {
             if( this[ prop ] === value )
                 return prop;
        }
    }
}

var test = {
   key1: 42,
   key2: 'foo'
};

test.getKeyByValue( 42 );  // returns 'key1'

提醒一句:即使以上方法有效,扩展任何主机或本机对象的 .prototype 通常不是一个好主意。我在这里这样做是因为它非常适合这个问题。无论如何,您应该在 .prototype 之外使用此函数,并将对象传递给它。

原文由 jAndy 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题