Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

184
Vistas
¿La mejor manera de representar un árbol de profundidad desconocida del mismo tipo de objeto en JavaScript/TypeScript?

La respuesta obvia aquí es tener una sola clase que represente el objeto, luego una referencia al objeto principal, si lo hay. La consulta a través del árbol sería comenzar en un nodo dado del árbol y devolver todos los objetos principales de ese nodo. Cada nodo tendrá solo un nodo padre directo.

¿Hay una mejor manera de hacer esto computacionalmente o desde una perspectiva de diseño de software?

EDITAR: Buscando sugerencias de mejora de la complejidad computacional o sugerencias de mantenimiento. La memoria no es un gran problema aquí.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

@Thomas uno relacional. No estoy seguro de cuál es la opinión de nuestro equipo sobre los procesos almacenados, pero si hay una razón lo suficientemente convincente para usarlos, estoy seguro de que puedo defender el caso.

En una base de datos relacional, usaría una expresión de tabla común

 WITH foo AS ( -- your start node SELECT * FROM MyData AS d WHERE d.id = 123 UNION ALL -- traversing up SELECT parent.* FROM MyData AS parent JOIN foo AS child ON parent.id = child.parentId ) -- selecting the data you want to return from the CTE SELECT * FROM foo;

En términos de JS, aquí hay una descripción de lo que hace la consulta anterior:

 // initial SELECT var foo = myData.filter(item => item.id === 123); // UNION ALL + SELECT with JOIN onto `foo` for (let i = 0; i < foo.length; ++i) { foo.push(...myData.filter(item => item.id === foo[i].parentId)); } console.log(foo);

solo que una selección de DB es mucho más rápida y de mayor rendimiento que Array#filter() en el código JS, pero básicamente producen el mismo resultado; una lista de (0 o más) coincidencias

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda