使用其值获取对象的属性名称[重复]
Posted
技术标签:
【中文标题】使用其值获取对象的属性名称[重复]【英文标题】:get an object's property name using its value [duplicate] 【发布时间】:2021-01-17 13:02:07 【问题描述】:我有一个对象
const alpha =
a: 'apple'
b: 'bubble'
目标是只使用值来获取属性名,比如我想用字符串apple来获取字符串形式的proberty名a。
【问题讨论】:
【参考方案1】:以下简单实现将在控制台中记录apple
的密钥。
const alpha =
a: 'apple',
b: 'bubble'
Object.entries(alpha).map(
([key, value]) =>
if (value === 'apple')
console.log(key);
)
【讨论】:
【参考方案2】:我认为你想做这样的事情......
const alpha =
a: 'apple',
b: 'bubble'
;
const selectKeys = (object, selector) =>
let results = [];
if (object != null)
results = Object.entries(object)
.filter((e) => selector(e[1], e[0], e))
.map((e) => e[0]);
return results;
;
const keys = selectKeys(alpha, (value) => value === 'apple');
console.log(keys);
这只会选择选择器表达式返回 true 的所有键。对于您的情况,这只是名称。请注意,这会返回一个数组,因为可以返回多个键。要获得第一个密钥,只需使用keys[0]
或其他任何内容。
您可以变得更花哨并添加更高阶的函数,以使您的选择器也更易于阅读。
const byValue = (value) => (v) => v === value;
const a = selectKeys(object, byValue('apple'));
const a = selectKeys(object, byValue('bubble'));
【讨论】:
【参考方案3】:您将返回值与提供的值匹配的键列表。如果您想要第一个匹配项,只需将值从结果的开头移开即可。
const alpha =
a: 'apple',
b: 'bubble'
;
const keysForValue = (obj, value) =>
Object.entries(obj)
.filter(([, val]) => val === value)
.map(([key]) => key);
console.log('Key:', keysForValue(alpha, 'bubble').shift()); // Key: b
.as-console-wrapper top: 0; max-height: 100% !important;
【讨论】:
【参考方案4】:试试下面的方法,
const alpha =
a: 'apple',
b: 'bubble',
c: 'bubble',
d: 'orange',
e: 'bubble'
const findKeyByValue = (obj, value) =>
const arr = [];
for (const prop in obj)
if(obj[prop] === value)
arr.push(prop);
return arr;
;
findKeyByValue(alpha, 'bubble'); //[ 'b', 'c', 'e' ]
【讨论】:
以上是关于使用其值获取对象的属性名称[重复]的主要内容,如果未能解决你的问题,请参考以下文章