当前位置: 首页 > 知识库问答 >
问题:

如何使用typescript获取枚举的所有值?[重复]

东方淇
2023-03-14

给定类型脚本枚举:

export enum Color {
    Red,
    Green,
    Blue,
}

我想在一个数组中得到它的所有值,如下所示:

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

但当我和

const colors = Object.keys(Color);

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

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

为什么会出现这种情况?我如何才能只获取值?

共有1个答案

贲文景
2023-03-14

你必须通过对象过滤掉数字键。值对象。按键

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
 类似资料:
  • 假设我有以下代码: 是否有一种方法可以得到下面的数组?

  • 问题内容: 我遇到了这个问题,我不知道需要迭代其实际值的实际类型。 任何想法如何从enumValue中提取其可能的值? 问题答案:

  • 问题内容: 我有以下列举。 我需要将所有原始值存储为字符串数组(例如)。 我将此方法添加到枚举中。 但我收到以下错误。 找不到类型’GeneratorOf’的初始化程序,该初始化程序接受类型’(()-> _)’的参数列表 有没有更简单,更好或更优雅的方式来做到这一点? 问题答案: 有一个协议: 对于Swift <4.2 不,您无法查询包含的值。看到这篇文章。您必须定义一个列出所有值的数组。还可以在

  • 我使用Enum4库创建enum类,如下所示: 我想在某处打印作为列表。如何实现这一点?

  • 本文向大家介绍Java获取枚举的值,包括了Java获取枚举的值的使用技巧和注意事项,需要的朋友参考一下 示例 每个枚举类都包含一个名为的隐式静态方法values()。此方法返回一个包含该枚举的所有值的数组。您可以使用此方法遍历值。重要的是要注意,此方法每次调用时都会返回一个新数组。 如果需要,Set也可以使用EnumSet.allOf(Day.class)。