Tengo el siguiente objeto de formulario:
{ "name":"form name", "forms":[ { "name":"form 1", "forms":[ ... ] } ] }
Los formularios pueden contener formularios dentro de ellos.
La idea era imprimir todos los nombres de los formularios.
Hice lo siguiente:
forms.forEach(form -> { console.log(form.name); form.forms.forEach(f -> { console.log(f.name); f.forms.forEach(...); }) });
No tengo idea de cuántas formas puede haber adentro, entonces, ¿cómo puedo hacer esto hasta el infinito?
Gracias
Usar recursividad
const pr = (data) => { console.log(data.name); data.forms.forEach((f) => pr(f)); };
Deberías usar la recursividad. Podría ser algo como esto:
function logFormName(data) { if (data.name) { console.log(data.name) } if (data.forms) { return data.forms.forEach((form) => logFormName(form)) } return; }
// forms data let forms = { "name":"form name", "forms":[ { "name":"form 1", "forms":[ ] } ] } // recursive function to iterate through each form // and print name of the form function printForms(forms) { if(forms.hasOwnProperty("forms")){ console.log(forms.name); // iterate over each form forms.forms.forEach(form => { // recursive call printForms(form); }) } } // call function to print name of each form printForms(forms)