Multiple ways to Convert Enum to Array of objects in Typescript with examples
- Admin
- Mar 6, 2024
- Typescript
In this tutorial, you’ll learn various methods to convert an enum into arrays of objects, strings, and key-value pairs in TypeScript, along with examples.
TypeScript Enum Constants
An enum
is a new data type in TypeScript, representing a group of constants. Data within an enum object can be of type String or Number. Most programming languages support enums.
Most programming languages support enums. You can check more about Typescript enum
You can check my other posts on typescript Enum object
.
An Object
contains key-value properties enclosed in {}
while an array is a collection of types enclosed in []
.
Since enum
and array
are different types of objects with structured data, we need to write code to handle conversions to display them in UI elements like drop-downs.
Let’s declare and initialize an enum
in TypeScript:
export enum Weeks {
MONDAY = 1,
TUESDAY = 2,
WEDNESDAY = 3,
THURSDAY = 4,
FRIDAY = 5,
SATURDAY = 6,
SUNDAY = 7,
}
Here’s the output after converting it into an array of objects
[
{
id: 1,
name: "MONDAY",
},
{
id: 2,
name: "TUESDAY",
},
{
id: 3,
name: "WEDNESDAY",
},
{
id: 4,
name: "THURSDAY",
},
{
id: 5,
name: "FRIDAY",
},
{
id: 6,
name: "SATURDAY",
},
{
id: 7,
name: "SUNDAY",
},
];
How to convert Enum to Object Array in Typescript?
There are several ways to convert an Enum to an Array of objects in TypeScript.
using ES8 Object.entries
In this example, the
Enum
keys and values are converted to an array of object keys and values. ES8 introduced theObject.entries()
method which works in modern browsers, requiring a polyfill for older ones.The
Object.entries()
method returns key-value pairs by iterating through an object. Here’s an example:Notes:
- Retrieve keys and values using the
Object.entries()
method. - Use the
for-of
loop to iterate each element of enum data. - Check for the key value of numbers and ignore the id of strings.
- Add the array of keys and values to the newly created array using the
push
method.
Here is an example
const arrayObjects = []; for (const [propertyKey, propertyValue] of Object.entries(Weeks)) { if (!Number.isNaN(Number(propertyKey))) { continue; } arrayObjects.push({ id: propertyValue, name: propertyKey }); } console.log(arrayObjects);
- Retrieve keys and values using the
Using String Array in typescript
Sometimes, you need to convert Enum values into an array. Object.values returns keys and values in order for the Enum object. Here’s how you can do it:
console.log(Object.values(Weeks));
Output:
["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY", 1, 2, 3, 4, 5, 6, 7]
Alternatively, you can filter only strings into an array using this code:
const arrayValues = Object.values(Weeks).filter(
(value) => typeof value === "string",
);
console.log(arrayValues);
output:
["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]
Convert Enum values as Array key and value strings in Typescript
In this example, we iterate through an Enum object using a for-in loop and construct an array by pushing key-value pairs as described below:
let output = [];
for (let key in Weeks) {
output.push({ name: key, number: Weeks[key] });
}
console.log(res);
Output:
[
{
"name": "1",
"number": "MONDAY"
},
{
"name": "2",
"number": "TUESDAY"
},
{
"name": "3",
"number": "WEDNESDAY"
},
{
"name": "4",
"number": "THURSDAY"
},
{
"name": "5",
"number": "FRIDAY"
},
{
"name": "6",
"number": "SATURDAY"
},
{
"name": "7",
"number": "SUNDAY"
},
{
"name": "MONDAY",
"number": 1
},
{
"name": "TUESDAY",
"number": 2
},
{
"name": "WEDNESDAY",
"number": 3
},
{
"name": "THURSDAY",
"number": 4
},
{
"name": "FRIDAY",
"number": 5
},
{
"name": "SATURDAY",
"number": 6
},
{
"name": "SUNDAY",
"number": 7
}
]
Summarize
In summary, you’ve learned how to convert Enums into TypeScript array objects with various methods.