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

119
Visualizações
Buscando una mejor manera de extraer todos los padres de un objeto de árbol en una matriz simple

Aquí hay una muestra de árbol obtenida a través de Typeorm:

 interface Base { id: string; name: string; parent?: Base; } const sample: Base[] = [ { id: "1", name: "Son", parent: { id: "2", name: "Father", parent: { id: "3", name: "Grand Father", }, }, }, ];

Quiero generar una matriz simple de todos los padres del objeto de árbol como este:

 const output = [ { id: "2", name: "Father", }, { id: "3", name: "Grand Father", } ]

Esta es mi función recursiva:

 function collect(obj: Base, output: Base[]) { if (obj.parent) { output = collect(obj.parent, output); } const { parent, ...rest } = obj; output.push(rest); return output; } let output = []; output = collect(sample[0], output); // Use pop to remove the last element which is the "Son" object. output.pop();

¿Hay una mejor manera de generar la matriz? Uso la biblioteca lodash, ¿funcionaría algo como _.flatMapDeep ?

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

0

Hay algunas optimizaciones menores posibles:

  • No exponga la matriz de salida innecesariamente
  • Solo comienza la colección un nivel más profundo
  • La recursividad es innecesaria
 function collect(input: Base) { const output = []; // Output contained in function let current = input.parent; // Skips self while (current != null) { // Loop instead of recursion const { parent, ...rest } = current; output.push(rest); current = current.parent; } return output; }; console.log(collect(sample[0]));

Patio de juegos

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