Me gustaría saber cómo convertir un objeto enumerado en una matriz de objetos en javascript
Funciona, pero obtengo el resultado con cuatro matrices de objetos en lugar de dos matrices de objetos
const result = Object.entries(countries).map(([value, key]) => ({ country: value.toLowerCase(), id: key }) ); enum countries { SINGAPORE = 123, DENMARK = 246 }Salida real:
[ {country: '123', id: 'singapore'} {country: '246', id: 'denmark'} {country: 'singapore', id: 123} {country: 'denmark', id: 246} ]Rendimiento esperado:
[ {country: "singapore", id: 123}, {country: "denmark", id: 246} ]Es importante comprender el JavaScript que genera el mecanografiado cuando usa enum ; el suyo se verá así:
{ "123":"SINGAPORE", "246":"DENMARK", "SINGAPORE":123, "DENMARK":246 } Lo que debería dejar en claro por qué obtiene 4 elementos cuando los enumera usando Object.entries (u Object.keys etc.).
Puede filtrar los valores numéricos si lo desea.
var countries = { "123":"SINGAPORE", "246":"DENMARK", "SINGAPORE":123, "DENMARK":246 } const result = Object.entries(countries) .filter(([key,_]) => !isNaN(key)) .map(([key, value]) => ({ country: value.toLowerCase(), id: key })); console.log(result);