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

102
Views
Objeto anidado de Javascript recursivo

Entonces, investigué y hasta ahora no puedo encontrar ninguna buena solución a mi problema ...

así que tengo un enfoque de objeto, así que probé una función recursiva pero no funciona en absoluto (por qué estoy aquí)

esta función pasa por una capa y se detiene, ella encuentra que id 3, id 11 tiene 1 hijo, mientras que quiero que sea más profundo

Espero que no sea una publicación duplicada.

y te lo agradezco de antemano

#función

 const haveChild = (obj, parent_id=0) =>{ for (const [key,value] of Object.entries(obj)){ if (value && typeof value === "object"){ if (value['childrens']){ for (const [k,v] of Object.entries(value.childrens)){ haveChild(v,v.parent_id) console.log('-----',v.name,'parent id= ',v.parent_id) } }else{ } } }

#datos de la API

 { "2": { "id": "2", "parent_id": "0", "name": "name1" }, "3": { "id": "3", "parent_id": "0", "name": "name2", "childrens": { "9": { "id": "9", "parent_id": "3", "name": "name3" } } }, "11":{ "id": "11", "parent_id": "0", "name": "name4", "childrens": { "16": { "id": "16", "parent_id": "11", "name": "name5", "childrens": { "21": { "id": "21", "parent_id": "16", "name": "name6", "childrens": { "23": { "id": "23", "parent_id": "21", "name": "name7" } } } } } } } }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

el problema es que la primera vez que llamas a la funcion, en el bucle for, key es la clave de cada objeto y value el valor correspondiente

Pero a partir de la segunda key de tiempo es el nombre del atributo y value el valor del atributo Entonces tienes que crear otro objeto de esta manera:

{[k]: v}

También muevo el console.log fuera del bucle for interno.

 const haveChild = (obj, parent_id=0) =>{ for (const [key,value] of Object.entries(obj)){ if (value && typeof value === "object"){ if (value.childrens){ for (const [k,v] of Object.entries(value.childrens)){ haveChild({[k]: v},v.parent_id) } } console.log('-----',value.name,'parent id= ',value.parent_id); } } }
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!