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

213
Vistas
Obtenga valores de una matriz anidada en JavaScript

Dada esta matriz que obtengo de una solicitud XHR:

 [ { "dinnerID": "h1799-05-20a", "date": "20 May 1799", "note": "<note xmlns=\"http://www.tei-c.org/ns/1.0\"/>", "diners": { "name": [ [ { "mentioned": null, "slept": "no", "cancelled": null, "person": "Miss Caroline Fox" } ], [ { "mentioned": null, "slept": "no", "cancelled": null, "person": "Lady Lucy Anne FitzGerald" } ], [ { "mentioned": null, "slept": "no", "cancelled": null, "person": "Dr ??? Drew" } ], [ { "mentioned": null, "slept": "no", "cancelled": null, "person": "Lady Elizabeth Vassall-Fox" } ], [ { "mentioned": null, "slept": "no", "cancelled": null, "person": "Lord Richard Vassall-Fox" } ] ] } } { "dinnerID": "h1799-05-21a", "date": "21 May 1799", } ]

¿Cómo obtengo una lista de los nombres ( person ) y también uso el otro mentioend , slept y cancelled ?

Este:

 for (var dinner of result) { let diners = dinner.diners.name.person.join(", ") }

devuelve un Uncaught TypeError: dinner.diners.name.person is undefined . Me gustaría devolver algo como

 Miss Caroline Fox (slept)(mentioned)(cancelled), Lady Lucy Anne FitzGerald (slept)(mentioned)(cancelled) etc.

Adjunto una captura de pantalla de mi console.log(result) .

consola.log

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

0

Si simplificamos los datos, obtendremos algo como

 { "diners": { "name": [ [ { "mentioned": null, "slept": "no", "cancelled": null, "person": "Miss Caroline Fox" } ], ... } }

Aquí vemos que diners es un objeto , que contiene una matriz en la clave de name . Dado que cada diner es un objeto, dentro de una matriz adicional, también necesitaremos apuntar a eso.

Para obtener el resultado deseado, use algo como;

 const result = {"dinnerID": "h1799-05-20a", "date": "20 May 1799", "note": "<note xmlns=\"http://www.tei-c.org/ns/1.0\"/>", "diners": {"name": [[{"mentioned": null, "slept": "no", "cancelled": null, "person": "Miss Caroline Fox"} ], [{"mentioned": null, "slept": "no", "cancelled": null, "person": "Lady Lucy Anne FitzGerald"} ], [{"mentioned": null, "slept": "no", "cancelled": null, "person": "Dr ??? Drew"} ], [{"mentioned": null, "slept": "no", "cancelled": null, "person": "Lady Elizabeth Vassall-Fox"} ], [{"mentioned": null, "slept": "no", "cancelled": null, "person": "Lord Richard Vassall-Fox"} ] ] } }; const res = result.diners.name.map(diner => { let obj = diner[0]; return `${obj.person} (${obj.slept}) (${obj.mentioned}) (${obj.cancelled})`; }); console.log(res.join(' '));

 Miss Caroline Fox (no) (null) (null) Lady Lucy Anne FitzGerald (no) (null) (null) Dr ??? Drew (no) (null) (null) Lady Elizabeth Vassall-Fox (no) (null) (null) Lord Richard Vassall-Fox (no) (null) (null)
about 4 years ago · Juan Pablo Isaza Denunciar

0

dinner.diners.name es una matriz bidimensional de objetos. Puede aplanarlo y luego mapearlo para obtener todos los nombres.

 result.forEach(dinner => { let diners = dinner.diners.name.flat().map(d => d.person).join(""); console.log(diners); })
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