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

2022-08-29 22:40:50

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


答案 1
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"));

答案 2

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

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