Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

194
Visualizações
Mostrar lista anidada dinámica en JavaScript

¿Cómo puedo mostrar una lista anidada dinámica en JavaScript? Entonces, el problema es que no sé cuántos datos anidados tendré, pero quiero mostrarlos todos.

Ejemplo de los datos:

 const data = [{ name: 'level1a', otherData: [ { name: 'level2a' }, { name: 'level2b' }, { name: 'level2c', otherData: [ { name: 'level3a', otherData: [ { name: 'level4a' }, { name: 'level4b' } ] }, { name: 'level3b' } ] } ] }]

Esto es solo un ejemplo, y quiero mostrar en alguna lista todo esto. Esto debería ser dinámico porque no sé cuántos niveles tendré. Pueden ser 5, 10, 20... No sé, por eso debe ser dinámico.

Quiero mostrar algo como esto en html

 level1a -- level2a -- level2b -- level2c -- level3a -- level4a -- level4b -- level3b

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede resolver este problema creando una función recursiva que recorre los datos anidados y crea nuevos nodos HTML en cada punto. Esta función tomará un contenedor inicial que proporcione y construirá su contenido recursivamente a través de la matriz anidada. Puede crear nodos de lista o contenedores simples y agregar su propio CSS para el estilo y la apariencia en cascada.

Aquí hay un ejemplo:

 // recursively add text and loop through nested data function displayNested(container, data) { data?.forEach(({ label, children }) => { // create text node const elementText = document.createTextNode(label); // create new container for the element const elementDiv = document.createElement('div'); // add CSS class for nested display elementDiv.classList.add('container'); // append text element to new container elementDiv.appendChild(elementText); // append new container to the current container container.appendChild(elementDiv); // recursively do the same for the current data's children displayNested(elementDiv, children); }); } const data = [{ label: 'level1a', children: [{ label: 'level2a' }, { label: 'level2b' }, { label: 'level2c', children: [{ label: 'level3a', children: [{ label: 'level4a' }, { label: 'level4b' }] }, { label: 'level3b' }] }] }]; const container = document.getElementById('main-container'); displayNested(container, data);
 .container { padding: 0px 16px; }
 <div id="main-container" />

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede lograr esto usando una función de autoinvocación, luego puede usar css para formatear el primer nivel de alguna otra manera.

 const data = [{ name: 'level1a', otherData: [ { name: 'level2a' }, { name: 'level2b' }, { name: 'level2c', otherData: [ { name: 'level3a', otherData: [ { name: 'level4a' }, { name: 'level4b' } ] }, { name: 'level3b' } ] } ] }]; generate(data, document.getElementById("container")); function generate(data, parent) { const ul = document.createElement("ul"); data.forEach((el) => { const li = document.createElement("li"); li.innerHTML = el.name; if(el.otherData) generate(el.otherData,li); ul.appendChild(li); }); parent.appendChild(ul); }
 <div id="container"></div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda