Javascript 获取一个对象';使用其值创建属性名
我有一个目标Javascript 获取一个对象';使用其值创建属性名,javascript,object,Javascript,Object,我有一个目标 const alpha = { a: 'apple' b: 'bubble' } 目标是通过仅使用值来获取属性名称,例如,我想使用字符串apple以字符串的形式获取proberty名称a。我想您应该这样做 const alpha = { a: 'apple', b: 'bubble' }; const selectKeys = (object, selector) => { let results = []; if (object != nu
const alpha = {
a: 'apple'
b: 'bubble'
}
目标是通过仅使用值来获取属性名称,例如,我想使用字符串apple以字符串的形式获取proberty名称a。我想您应该这样做
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的所有键。就你的情况而言,这只是名字。请注意,这将返回一个数组,因为可以返回多个键。要获得第一个键,只需使用键[0]
或其他任何键
您还可以使用更高级的功能,使选择器更易于阅读
const byValue = (value) => (v) => v === value;
const a = selectKeys(object, byValue('apple'));
const a = selectKeys(object, byValue('bubble'));
下面的简单实现将在控制台中记录
apple
的键
const alpha = {
a: 'apple',
b: 'bubble'
}
Object.entries(alpha).map(
([key, value]) => {
if (value === 'apple'){
console.log(key);
}
}
)
您将返回一个键值与提供的值匹配的键值列表。如果您想要第一个匹配,只需将值从结果的开头移开即可
const alpha={
a:‘苹果’,
b:‘泡沫’
};
常量keysForValue=(对象,值)=>
Object.entries(obj)
.filter(([,val])=>val==value)
.map(([key])=>key);
console.log('Key:',keysForValue(alpha,'bubble').shift());//键:b
。作为控制台包装{top:0;最大高度:100%!important;}
尝试以下方法
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' ]