得到对应于js对象中的值的键

我有一个对象,如:

var inspectionMapping = {'a_pillar_lh' : "A Pillar LH", 'b_pillar_lh' : "B Pillar LH"}; console.log(inspectionMapping['a_pillar_lh']); // Which gives me correct "A Pillar LH". 

我能够得到对应于键的值。

但是我无法获得对应于javascript对象的值。

比如我有"A Pillar LH" ,我需要得到相应的键是a_pillar_lh

我试图使用indexOf但没有成功。

你可以简单地使用Object.keys()获取所有的键值,然后使用.find()函数从该数组中取出键值,然后很好地将其包含在一个函数中,使其成为模块化的。

 var inspectionMapping = { 'a_pillar_lh': "A Pillar LH", 'b_pillar_lh': "B Pillar LH" }; Object.prototype.getKey = function(value) { var object = this; return Object.keys(object).find(key => object[key] === value); }; alert(inspectionMapping.getKey("A Pillar LH")); 

尝试这个。

 Object.keys(inspectionMapping).find(key => inspectionMapping[key] === 'A Pillar LH'); 

如果有人对Lodash解决scheme感兴趣,下面是我常用的一个。 这个方法取反对象,交换键的值,然后通过查找这个新对象的值来find这个键。

 var inspectionMapping = { 'a_pillar_lh': "A Pillar LH", 'b_pillar_lh': "B Pillar LH" }; var getKey = function( obj, value ) { var inverse = _.invert( obj ); return _.get( inverse, value, false ); }; alert( 'The key for "A Pillar LH" is "' + getKey( inspectionMapping, 'A Pillar LH' ) + '"' ); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>