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

273
Vistas
¿Cómo ordenar una matriz con objetos padres e hijos con JavaScript?

Tengo una matriz con objeto, que necesito ordenar de tal manera que primero aparezca el objeto principal, y luego sus objetos secundarios, y así sucesivamente. Sin embargo, cuando trato de encontrar el índice de un objeto principal en la matriz para empujar el objeto secundario después de él, el método findIndex() devuelve -1. ¿Alguien puede señalar la raíz de este problema, ya que no puedo ver claramente por qué lo hace? El código y la matriz de datos que estoy usando están escritos a continuación.

 const data = [ { "_id": "0", "parent": null, "title": "All" }, { "_id": "61c0a9cb8f67e811d55abb2d", "parent": null, "title": "Electronics" }, { "_id": "61c0a9cb8f67e811d55abb2e", "parent": { "_id": "61c0a9cb8f67e811d55abb2d" }, "title": "Phones" }, { "_id": "61c0a9cb8f67e811d55abb2f", "parent": { "_id": "61c0a9cb8f67e811d55abb2d" }, "title": "Laptops" }, { "_id": "61c0a9cb8f67e811d55abb30", "parent": { "_id": "61c0a9cb8f67e811d55abb2d" }, "title": "TVs" }, { "_id": "61c0a9cb8f67e811d55abb31", "parent": null, "title": "Literature" }, { "_id": "61c0a9cb8f67e811d55abb32", "parent": { "_id": "61c0a9cb8f67e811d55abb31"}, "title": "Study Literature" }, { "_id": "61c0a9cb8f67e811d55abb33", "parent": { "_id": "61c0a9cb8f67e811d55abb31" }, "title": "Fictional Literature" }, { "_id": "61c0a9cb8f67e811d55abb34", "parent": { "_id": "61c0a9cb8f67e811d55abb31" }, "title": "Comic books" }, { "_id": "61c0a9cb8f67e811d55abb35", "parent": { "_id": "61c0a9cb8f67e811d55abb2e" }, "title": "Smartphones" }, { "_id": "61c0a9cb8f67e811d55abb36", "parent": { "_id": "61c0a9cb8f67e811d55abb35" }, "title": "Accessories" } ]; let parents = []; data.forEach( element => { if( element.parent == null ) { parents.push(element); } else { let parentId = element.parent._id; let index = parents.findIndex(item => { item._id == parentId; }); console.log(index); parents.splice(index+1, 0, element); } });

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Usar item => {parentId == item._id;} requiere un 'retorno' para ser usado: item => {return parentId == item._id;} sin el retorno la función es básicamente item => null ; que es visto como falso por .findIndex() resultando en un -1

Si usa la función de flecha sin las llaves, se implica un retorno (pero lo limita a expresiones de una sola línea como compensación): item => parentId == item._id

Fuente: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

about 4 years ago · Santiago Trujillo 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