Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

266
Views
¿Cómo recorro un objeto anidado y luego agrego los valores a las celdas de la tabla HTML, en Javascript?

Me gustaría insertar datos JSON analizados en una tabla HTML a través de Javascript. Creo que estoy cerca de una solución, pero no puedo descifrar el paso final.

Objetivo: necesito insertar el nombre, la edad, la identidad secreta y los poderes de tres superhéroes en sus respectivas columnas en una tabla. Los datos provienen de un archivo JSON. Lo analicé y está listo para usar en Javascript. Quiero recorrer los objetos dentro de los datos e insertar los datos correctos en las celdas. No tengo permitido usar jQuery o técnicas similares.

Problema: el problema es que parece que no puedo recorrer los objetos (nombre, edad, etc.) para cada superhéroe y agregarlo a la celda. ¿Cómo apunto/hago referencia a los objetos para usarlos en un bucle? Por ejemplo, esto 'funciona', pero da un resultado incorrecto ya que no quiero recorrer los nombres:

Código JavaScript:

 for(i = 0; i < members.length; i++) { function addRow(tableID) { let tableRef = document.getElementById(tableID); let newRow = tableRef.insertRow(-1); for(x = 0; x < 4; x++) { let newCell = newRow.insertCell(0); let newText = document.createTextNode(members[i].name); newCell.appendChild(newText); }

ingrese la descripción de la imagen aquí

En cambio, quiero recorrer el objeto de esta manera, de manera horizontal.

ingrese la descripción de la imagen aquí

Solución esperada: espero que la solución se vea así, pero no funciona:

 for(x = 0; x < 4; x++) { let newCell = newRow.insertCell(0); let newText = document.createTextNode(members[i].obj[x]); newCell.appendChild(newText);

datos JSON:

 const data = [ { squadName : 'Super Hero Squad' , homeTown : 'Metro City' , formed : 2016 , secretBase : 'Super tower' , active : true , members : [ { name : 'Molecule Man' , age : 29 , secretIdentity : 'Dan Jukes' , powers : [ 'Radiation resistance' , 'Turning tiny' , 'Radiation blast' ] } , { name : 'Madame Uppercut' , age : 39 , secretIdentity : 'Jane Wilson' , powers : [ 'Million tonne punch' , 'Damage resistance' , 'Superhuman reflexes' ] } ] } //, {} ]

¿Hay alguien que pueda ayudar? ¡Gracias por adelantado!

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Simplemente recorra cada propiedad del member[i]

 for (i = 0; i < members.length; i++) { addRow('table', members[i]); } function addRow(tableID, member) { let tableRef = document.getElementById(tableID); let newRow = tableRef.insertRow(-1); for (let prop in member) { let newCell = newRow.insertCell(-1); let newText = document.createTextNode(member[prop]); newCell.appendChild(newText); } }
about 4 years ago · Juan Pablo Isaza Report

0

No estoy 100% seguro de qué columnas necesita, pero creo que esto se acerca a lo que quería. Con suerte, puede ver el patrón general para crear un elemento DOM, llenarlo con datos y agregarlo a la tabla.

 const data = [ { squadName : 'Super Hero Squad' , homeTown : 'Metro City' , formed : 2016 , secretBase : 'Super tower' , active : true , members : [ { name : 'Molecule Man' , age : 29 , secretIdentity : 'Dan Jukes' , powers : [ 'Radiation resistance' , 'Turning tiny' , 'Radiation blast' ] } , { name : 'Madame Uppercut' , age : 39 , secretIdentity : 'Jane Wilson' , powers : [ 'Million tonne punch' , 'Damage resistance' , 'Superhuman reflexes' ] } ] } //, {} ] const table = document.getElementById('root'); data.forEach(squad => { squad.members.forEach(hero => { const tr = document.createElement("tr") const nameTd = document.createElement("td") nameTd.append(hero.name) const ageTd = document.createElement("td") ageTd.append(hero.age) const secretTd = document.createElement("td") secretTd.append(hero.secretIdentity) const powersTd = document.createElement("td") powersTd.append(hero.powers.join(', ')) tr.append(nameTd) tr.append(ageTd) tr.append(secretTd) tr.append(powersTd) table.append(tr) }) })
 td { border: solid black 1px; }
 <table id="root"> </table>

about 4 years ago · Juan Pablo Isaza Report

0

Lo que está buscando en el bucle anidado, el horizontal, es "for in". "for in" recorrerá las propiedades de un Objeto. Consulte este artículo

https://www.w3schools.com/js/js_loop_forin.asp

Pero no le recomiendo que use este método: simplemente acceda al valor de la clave para generar cada columna ( <td> ), porque el orden de las claves no está garantizado en un bucle. Aún debe verificar la clave en el bucle anidado para que sea seguro.

¿JavaScript garantiza el orden de las propiedades de los objetos?

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!