pretvaranje enum objekta u niz vraća dodatni objekt u JavaScriptu
Volio bih znati kako pretvoriti enum objekt u niz objekata u JavaScriptu
Radi, ali dobivam izlaz s četiri niza objekata umjesto s dva niza objekata
const result = Object.entries(countries).map(([value, key]) =>
({ country: value.toLowerCase(), id: key })
);
enum countries {
SINGAPORE = 123,
DENMARK = 246
}
Stvarni izlaz:
[
{country: '123', id: 'singapore'}
{country: '246', id: 'denmark'}
{country: 'singapore', id: 123}
{country: 'denmark', id: 246}
]
Očekivani rezultat:
[
{country: "singapore", id: 123},
{country: "denmark", id: 246}
]
Odgovor #1
Važno je razumjeti JavaScript koji TypeScript generira kada koristite enum - vaš će izgledati ovako:
{
"123":"SINGAPORE",
"246":"DENMARK",
"SINGAPORE":123,
"DENMARK":246
}
Što bi trebalo jasno pokazati zašto dobivate 4 stavke kada ih nabrajate koristeći Object.entries (ili Object.keys itd.).
Možete filtrirati numeričke vrijednosti ako želite
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);