获取js对象中值对应的键
get key corresponding to value in js object
我有一个对象,例如:
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"));
编辑对于那些不想使用ES6 的人
Object.prototype.getKey = function(value) {
var object = this;
for(var key in object){
if(object[key]==value) return key;
}
};
试试这个。
Object.keys(inspectionMapping).find(key => inspectionMapping[key] === 'A Pillar LH');
如果有人对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>
相关文章:
- 查看JS对象的所有键,甚至是getter定义的键
- 在URL中传递JS对象
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- JS对象密钥序列
- 在ajax调用中阻止来自JS对象的函数
- 属性未添加到JS对象
- 将字符串转换为JS对象
- 使用lodash查找具有truthy值的JS对象的属性
- 将toString方法暴露给nashorn中的js对象
- JSON数组转换为JS对象数组
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- 设置1400个Raphael.js对象的不透明度动画会影响动画性能
- 以非ajax方式将js对象传递给mvc操作
- JS对象->来自jquery ajax的JSON提交->php迭代
- XMLHttpRequest发送JS对象
- 使用游标循环将JS对象添加到数组中
- 动态(重新)创建iframe内容不会重置Chrome中的JS对象
- 将JS对象数组转换为嵌套形式的最有效方法
- 在知道对象值的情况下,确定数组中JS对象的索引
- JS对象文字中的方法和子方法