我有一个对象,例如:
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".
我可以获得与key对应的值。
但是我无法获得与javascript对象中的值对应的键。
例如我有"A Pillar LH"
,我需要获取相应的密钥a_pillar_lh
。
我尝试使用indexOf
但没有成功。
答案 0 :(得分:8)
您可以使用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"));
编辑对于那些不想使用ES6的人
Object.prototype.getKey = function(value) {
var object = this;
for(var key in object){
if(object[key]==value) return key;
}
};
答案 1 :(得分:3)
试试这个。
Object.keys(inspectionMapping).find(key => inspectionMapping[key] === 'A Pillar LH');
答案 2 :(得分:0)
如果有人对Lodash解决方案感兴趣,这是我经常使用的解决方案。此方法反转对象,交换值的值,然后通过查找该新对象的值来查找键。
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>
&#13;