猿问

如何读取JavaScript枚举值

我有以下代码,并且我试图通过int获取值


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

const myFruit = 1;


alert(fruit[myFruit]);//undefined


alert(fruit(myFruit));//not a function (obviously)

我希望警报提供水果的名称,因此在这种情况下,警报香蕉为1


这可能吗?我没有使用任何框架,所以请不要使用JQuery / Angular / React等。只需使用Javascript。


我是否必须遍历以找到匹配项,因为以下方法也不起作用:


alert(fruit.length);


繁星淼淼
浏览 416回答 2
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。

米脂

这就是打字稿处理枚举的方式。创建一个对象,该对象将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"}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答