k0p*_*kus 9 arrays enums object typescript
给定一个TypeScript枚举:
export enum Color {
Red,
Green,
Blue,
}
Run Code Online (Sandbox Code Playgroud)
我想在数组中得到它的所有值:
["Red", "Green", "Blue"]
Run Code Online (Sandbox Code Playgroud)
然而,当我在那个enum上工作时
const colors = Object.keys(Color);
Run Code Online (Sandbox Code Playgroud)
我得到由其索引和值组成的怪异数组:
[ '0', '1', '2', 'Red', 'Green', 'Blue' ]
Run Code Online (Sandbox Code Playgroud)
为什么会这样,我怎么才能得到这些值?
k0p*_*kus 34
如果你有 ES 2017 运动,你可以使用:
Object.values(Color)
Run Code Online (Sandbox Code Playgroud)
对于较旧的 JavaScript 版本,您可以过滤掉数字键:
const colors = Object.keys(Color).filter((item) => {
return isNaN(Number(item));
});
console.log(colors.join("\n"));
Run Code Online (Sandbox Code Playgroud)
这将打印:
Red
Green
Blue
Run Code Online (Sandbox Code Playgroud)
TypeScript 枚举最终会转译为一个普通的 JavaScript 对象:
{
'0': 'Red',
'1': 'Green',
'2': 'Blue',
Red: 0,
Green: 1,
Blue: 2
}
Run Code Online (Sandbox Code Playgroud)
因此,您可以使用数字索引作为键来获取值,并且可以使用该值在枚举中查找其索引:
console.log(Color[0]); // "Red"
console.log(Color["0"]); // "Red"
console.log(Color["Red"]) // 0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6392 次 |
最近记录: |