Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

92
Vistas
Angular 11 no puede acceder a la propiedad del objeto dinámicamente

Tengo que acceder a un subconjunto de las propiedades de mi objeto y almacenar la etiqueta y el valor en otra matriz. Básicamente tengo este objeto:

 myObject: CustomObject { prop1: value1, prop2: value2 prop3: value3 }

y como salida necesito una matriz con objetos de tipo: {label: string, value: number} .
Necesito llenar esta matriz con prop1 y prop2 y sus valores, para tener algo como esto:

 myArray = [{label: prop1, value: value1}, {label: prop2, value: value2}]

Lo que he probado es esto:

 labels = ['prop1', 'prop2']; labels.forEach((l: any) => { this.myArray.push({ label: l, value: this.myObject[l] }) })

o también this.myObject.l

Pero me sale este error:

El elemento tiene implícitamente un tipo 'cualquiera' porque la expresión de tipo 'cualquiera' no se puede usar para indexar el tipo 'MiObjeto'

Cambié el tipo de "l" a cadena pero obtuve:

No se encontró ninguna firma de índice con un parámetro de tipo 'cadena' en el tipo

¿Cuál es la forma correcta de hacer esto?

miObjeto

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En lugar de any , puede usar keyof para decirle a TypeScript que las etiquetas son una matriz de cadenas donde las cadenas son las claves de su interfaz:

Enlace del patio de recreo

 interface CustomObject { prop1: any; prop2: any; prop3: any; } const myObject: CustomObject = { prop1: 1, prop2: 2, prop3: 3, } const labels: (keyof CustomObject)[] = ['prop1', 'prop2']; const myArray = labels.map(label => ({ label, value: myObject[label] })) console.log(myArray)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar la función Object.entries para iterar sobre pares clave/valor:

 const myObject = { prop1: 'value1', prop2: 'value2', prop3: 'value3' } let myArray = []; Object.entries(myObject).map((item)=>{ myArray.push({label:item[0], value:item[1]})}) console.log(myArray)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda