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

143
Visualizações
generar una estructura similar a un árbol usando una cadena separada por puntos

Lucho con la estructura del árbol. :(

Me gustaría hacer un árbol siguiendo la siguiente interfaz.

 export type Tree = Array<TreeNode>; export interface TreeNode { label: string; type: 'folder' | 'file'; children: Array<TreeNode> | string; }

Por ejemplo,

Tengo un archivo JSON como este

 { "common.header.title": "Header Title", "common.footer.btn": "Footer button", "common.footer.btn.submit": "Footer Submit", "apage.title": "apage Title" }

Mi resultado esperado es así.

 const out = [ { label: 'apage', type: 'folder', children: [ { label: 'title', type: 'file', children: 'apage Title' } ] }, { label: 'common', type: 'folder', children: [ { label: 'footer', type: 'folder', children: [ { label: 'btn', type: 'file', children: 'Footer button' }, { label: 'btn', type: 'folder', children: [{ label: 'submit', type: 'file', children: 'Footer Submit' }] }, ] }, { label: 'header', type: 'folder', children: [{ label: 'title', type: 'file', children: 'Header Title' }] } ] } ]

He visto algunos casos similares en SO, pero no pude referirme y desarrollarme con esos casos.

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

0

Puede buscar las etiquetas deseadas y verificar si children son una matriz, luego use este objeto para buscar en la matriz anidada.

Finalmente empuje un nuevo objeto.

 const data = { "common.header.title": "Header Title", "common.footer.btn": "Footer button", "common.footer.btn.submit": "Footer Submit", "apage.title": "apage Title" }, result = Object .entries(data) .sort(([a], [b]) => a.localeCompare(b)) .reduce((r, [path, children]) => { const keys = path.split('.'), label = keys.pop(); keys .reduce((t, label) => { let temp = t.find(o => o.label === label && Array.isArray(o.children)); if (!temp) t.push(temp = { label, type: 'folder', children: [] }); return temp.children; }, r) .push({ label, type: 'file', children }); return r; }, []); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

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