TypeScript enum to object array

前端 未结 15 2916
不思量自难忘°
不思量自难忘° 2020-12-08 03:38

I have an enum defined this way:

export enum GoalProgressMeasurements {
    Percentage = 1,
    Numeric_Target = 2,
    Completed_Tasks = 3,
    Average_Mile         


        
15条回答
  •  孤城傲影
    2020-12-08 04:17

    Enums are real objects that exist at runtime. So you are able to reverse the mapping doing something like this:

    let value = GoalProgressMeasurements.Not_Measured;
    console.log(GoalProgressMeasurements[value]);
    // => Not_Measured
    

    Based on that you can use the following code:

    export enum GoalProgressMeasurements {
        Percentage = 1,
        Numeric_Target = 2,
        Completed_Tasks = 3,
        Average_Milestone_Progress = 4,
        Not_Measured = 5
    }
    
    let map: {id: number; name: string}[] = [];
    
    for(var n in GoalProgressMeasurements) {
        if (typeof GoalProgressMeasurements[n] === 'number') {
            map.push({id: GoalProgressMeasurements[n], name: n});
        }
    }
    
    console.log(map);
    

    Reference: https://www.typescriptlang.org/docs/handbook/enums.html

提交回复
热议问题