为了账号安全,请及时绑定邮箱和手机立即绑定

如何读取JavaScript枚举值

如何读取JavaScript枚举值

繁星淼淼 2021-04-03 19:15:51
我有以下代码,并且我试图通过int获取值const fruit = Object.freeze({ Apple: 0, Banana: 1, Cherry: 2});const myFruit = 1;alert(fruit[myFruit]);//undefinedalert(fruit(myFruit));//not a function (obviously)我希望警报提供水果的名称,因此在这种情况下,警报香蕉为1这可能吗?我没有使用任何框架,所以请不要使用JQuery / Angular / React等。只需使用Javascript。我是否必须遍历以找到匹配项,因为以下方法也不起作用:alert(fruit.length);
查看完整描述

2 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

我是否必须遍历才能找到匹配项...

是的。对象按属性名称提供查找,但不按属性值提供查找。因此,例如:

const fruitName = Object.keys(fruit).find(name => fruit[name] === myFruit);

现场示例:

const fruit = Object.freeze({ Apple: 0, Banana: 1, Cherry: 2});

const myFruit = 1;


const fruitName = Object.keys(fruit).find(name => fruit[name] === myFruit);


console.log(fruitName);

它将获得属性名称的数组,然后用于Array.prototype.find查找第一个具有匹配值的属性myFruit


查看完整回答
反对 回复 2021-04-08
?
米脂

TA贡献1836条经验 获得超3个赞

这就是打字稿处理枚举的方式。创建一个对象,该对象将Apple键指向0并0指向Apple。因此,它可以双向工作。这样,您不必遍历对象的键并每次都使用数字来取回键


const fruit = {};

fruit[fruit["Apple"] = 0] = "Apple";

fruit[fruit["Banana"] = 1] = "Banana";

fruit[fruit["Cherry"] = 2] = "Cherry";


console.log(fruit.Banana)

console.log(fruit[2])

那只是一种奇特的写作方式:


const fruit = {

  Apple: 0,

  Banana: 1,

  Cherry: 2,

  0: "Apple",

  1: "Banana",

  2: "Cherry"

}


查看完整回答
反对 回复 2021-04-08
  • 2 回答
  • 0 关注
  • 415 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信