arrays - 如何使用 typescript 获取枚举的所有值?

标签 arrays typescript object enums

<分区>

给定一个 TypeScript 枚举:

export enum Color {
    Red,
    Green,
    Blue,
}

我想像这样在数组中获取它的所有值:

["Red", "Green", "Blue"]

然而,当我处理那个枚举时

const colors = Object.keys(Color);

我得到了由其索引和值组成的奇怪数组:

[ '0', '1', '2', 'Red', 'Green', 'Blue' ]

为什么会这样,我怎样才能只获取值?

最佳答案

您必须通过 Object.valuesObject.keys 过滤掉数字键:

const colors = Object.keys(Color).filter((item) => {
    return isNaN(Number(item));
});
console.log(colors.join("\n"));

这将打印:

Red
Green
Blue

TypeScript 枚举最终会转译成普通的 JavaScript 对象:

{ 
  '0': 'Red', 
  '1': 'Green',
  '2': 'Blue',
  Red: 0,
  Green: 1,
  Blue: 2
}

因此您可以使用数字索引作为键来获取值,并且可以使用该值在枚举中查找其索引:

console.log(Color[0]); // "Red"
console.log(Color["0"]); // "Red"
console.log(Color["Red"]) // 0

关于arrays - 如何使用 typescript 获取枚举的所有值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48768774/

相关文章:

arrays - 迭代时更改值

java - 赋值运算符遇到问题

javascript - 我尝试从 javascript 对象检索 `employee info` 但在检查 javascript 控制台时出错

c++ - 删除函数内的对象

javascript - for循环中对象中每个键的返回值

arrays - 在 Postgres JSON 数组中查询

C++数组未声明的标识符错误

css - 如何突出显示多个 ionic 列表中的选定元素?

reactjs - ForkTsCheckerWebpackPlugin内存不足(解决方案)

c# - 在 Angular 6 中传递带有空字符串的整数值时不调用 API Get 方法