Hola usuario de nuestro sitio web, descubrimos la solución a tu búsqueda, has scroll y la obtendrás aquí.
Solución:
Sí, tienes el error correcto. Si quieres conseguir tu enum key
por value
en ese caso, debe volver a escribir su enumeración de esta manera para .ts:
export enum Colors
RED = "RED COLOR",
BLUE = "BLUE COLOR",
GREEN = "GREEN COLOR"
Entonces puedes obtener de esta manera:
let enumKey = Colors["BLUE COLOR"];
console.log(enumKey);
Otra forma es hacer un bucle, lo que sería poco costoso y el código sería ruidoso, lo que no prefiero.
Update:
Para .tsx debería ser así.
export enum Colors
RED = "RED COLOR" as any,
BLUE = "BLUE COLOR" as any,
GREEN = "GREEN COLOR" as any
También debería funcionar como arriba.
estoy usando esta funcion
export function getEnumKeyByEnumValue(myEnum: any, enumValue: number | string): string
let keys = Object.keys(myEnum).filter((x) => myEnum[x] == enumValue);
return keys.length > 0 ? keys[0] : '';
Pruebas con broma
describe('enum', () =>
enum TestEnumWithNumber
ZERO
enum TestEnumWithString
ZERO = 'ZERO'
it('should return correct key when enum has number values', function()
const key = getEnumKeyByEnumValue(TestEnumWithNumber, TestEnumWithNumber.ZERO);
expect(key).toBe('ZERO');
);
it('should return correct key when enum has string values', function()
const key = getEnumKeyByEnumValue(TestEnumWithString, TestEnumWithString.ZERO);
expect(key).toBe('ZERO');
);
it('should return correct key by passing corresponding string value', function()
const key = getEnumKeyByEnumValue(TestEnumWithString, 'ZERO');
expect(key).toBe('ZERO');
);
);
Espero que ayude a alguien
const findMe = Object.keys(Colors)[Object.values(Colors).indexOf("BLUE COLOR")];
https://jsfiddle.net/anniebbird/agy3unfk/3/
Sección de Reseñas y Valoraciones
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)