Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I loop through enum values for display in radio buttons? [duplicate]

What is the proper way to loop through literals of an enum in TypeScript?

(I am currently using TypeScript 1.8.1.)

I've got the following enum:

export enum MotifIntervention {     Intrusion,     Identification,     AbsenceTest,     Autre }  export class InterventionDetails implements OnInit {     constructor(private interService: InterventionService)     {         let i:number = 0;         for (let motif in MotifIntervention) {             console.log(motif);         }     } 

The result displayed is a list

0 1 2 3 Intrusion, Identification, AbsenceTest, Autre 

I do want only four iterations in the loop as there are only four elements in the enum. I don't want to have 0 1 2 and 3 that seem to be index numbers of the enum.

like image 810
Anthony Brenelière Avatar asked Sep 07 '16 14:09

Anthony Brenelière


People also ask

Can you loop through all enum values in C#?

Yes. Use GetValues() method in System. Enum class.

Can you loop through enum Javascript?

Iterating over the keys Of course, it's also possible to loop over the keys of a string enum, using Object.


1 Answers

Two options:

for (let item in MotifIntervention) {     if (isNaN(Number(item))) {         console.log(item);     } } 

Or

Object.keys(MotifIntervention).filter(key => !isNaN(Number(MotifIntervention[key]))); 

(code in playground)


Edit

String enums look different than regular ones, for example:

enum MyEnum {     A = "a",     B = "b",     C = "c" } 

Compiles into:

var MyEnum; (function (MyEnum) {     MyEnum["A"] = "a";     MyEnum["B"] = "b";     MyEnum["C"] = "c"; })(MyEnum || (MyEnum = {})); 

Which just gives you this object:

{     A: "a",     B: "b",     C: "c" } 

You can get all the keys (["A", "B", "C"]) like this:

Object.keys(MyEnum); 

And the values (["a", "b", "c"]):

Object.keys(MyEnum).map(key => MyEnum[key]) 

Or using Object.values():

Object.values(MyEnum) 
like image 123
Nitzan Tomer Avatar answered Oct 21 '22 06:10

Nitzan Tomer