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' ]