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

251
Vistas
Función de mapa JS Array, no se puede leer la propiedad de indefinido

Tengo una matriz JS compleja de objetos y propiedades. Algunos de ellos devuelven valor pero algunos devuelven nulo, el problema es que cuando estoy mapeando a través de la lista, se produce un error cada vez que hay un valor nulo.

No puedo filtrar la matriz en este momento porque ya estoy dentro de un ciclo y no debo crear otra matriz filtrada. ¿Cuál sería mi mejor enfoque? Quiero que mi bucle devuelva Array.Group.name[0].text y, si no está allí, simplemente devuelva nulo.

 const x = [ { "id": "1", "Groups": [ { "name": [ { "language": "en-US", "text": "REGULAR_TIME" } ], "isSystem": true }, { "name": [ { "language": "en-US", "text": "CHARGEABLE" } ], "isSystem": true } ] }, { "id": "2", "Groups": [ { "name": [ { "language": "en-US", "text": "REGULAR_TIME" } ], "isSystem": true }, { "name": [ { "language": "en-US", "text": "CHARGEABLE" } ], "isSystem": true } ] } ] x.map(y=>y.Groups.name[0].text) console.log(x)
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Groups también es una matriz, por lo que debe usar índices para acceder a sus miembros como Groups[0] . Sin embargo, no está claro el nombre del elemento de Groups que desea obtener.

Probablemente, quiso decir x.map(y=>y.Groups[0].name[0].text)

Groups que son una matriz también son un objeto. entonces Groups.name no le da nada ya que dicha propiedad no está presente.

 let x = [ { "id": "1", "Groups": [ { "isSystem": true }, { "name": [ { "language": "en-US", "text": "CHARGEABLE" } ], "isSystem": true } ] }, { "id": "2", "Groups": [ { "name": [ { "language": "en-US", "text": "REGULAR_TIME" } ], "isSystem": true }, { "name": [ { "language": "en-US", "text": "CHARGEABLE" } ], "isSystem": true } ] } ]; console.log(x.map(y => y.Groups[0].name?.[0].text)); // or just filter the absent names out before the main routine. console.log(x.filter(y => y.Groups[0].name).map(y => y.Groups[0].name?.[0].text));

about 4 years ago · Juan Pablo Isaza Denunciar

0

aquí está el problema! Groups son una matriz, por lo que:

 let result = []; for (i=0; i<x.length;i++){ for(j=0;j<x[i].Groups.length;j++){ result.push(x[i].Groups[j].name[0].text) } }

este bucle devuelve un resultado que contiene una matriz de texto

o puedes probar esto:

 x.forEach(el=>{ el.Groups.forEach(v=>{ result.push(v.name[0].text) }) })
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