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

136
Visualizações
Iterar a través de matrices anidadas de objetos con un número indeterminado de niveles de nodos secundarios

En un árbol de múltiples nodos , cuando agrego una nueva fila, necesito obtener la referencia de esa fila, por su id, para activar el evento de clic de fila mediante programación.

En el siguiente ejemplo, si agrego la fila con id 9, cómo iterar a través del árbol hasta este nodo.

Nota: los hijos de los nodos hijos son ilimitados (por ejemplo: padre-hijos-hijos-hijos-hijos-hijos... )

Ejemplo de árbol

 let data = [{ "id": 1, "name": "parent 1" }, { "id": 2, "name": " parent 2", "children": [{ "id": 5, "name": "parent-children 5", },{ "id": 6, "name": "parent-children 6", "children": [{ "id": 7, "name": "parent-children-children 7", },{ "id": 8, "name": "parent-children-children 8", "children": [{ "id": 9, "name": "parent-children-children-children 9", },{ "id": 10, "name": "parent-children-children-children 10", }] }] }] }, { "id": 3, "name": "parent 3" }, { "id": 4, "name": "parent 4" }]

Iteración en los niveles uno y dos de los nodos

 getItemRow(id){ //If is a parent node let myItem = this.parents.find(parent => parent.id === id); if(myItem !== undefined){ return myItem } //If is a second level children node (parent-children) this.parents.forEach(function(parent){ let child = parent.children.find(child => child.id === id); if(child !== undefined){ return child } }); }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Podemos buscar recursivamente todos los nodos hasta encontrar la coincidencia:

 getItemRow(id){ return findNodeWithId(id, this.parents) } findNodeWithId(id, rootArr) { for (let el of rootArr) { if (el.id === id) { return el } if (el.children) { const idFoundInChildren = findNodeWithId(id, el.children) if (idFoundInChildren !== null) { return idFoundInChildren } } } return null }
about 4 years ago · Juan Pablo Isaza Relatório

0

Puede tomar una recursividad y encontrar el objeto directamente o buscando en la matriz de niños.

 const find = (array, id) => { let result; array.some(o => result = o.id === id ? o : find(o.children || [], id) ) return result; }, data = [{ id: 1, name: "parent 1" }, { id: 2, name: " parent 2", children: [{ id: 5, name: "parent-children 5" }, { id: 6, name: "parent-children 6", children: [{ id: 7, name: "parent-children-children 7" }, { id: 8, name: "parent-children-children 8", children: [{ id: 9, name: "parent-children-children-children 9" }, { id: 10, name: "parent-children-children-children 10" }] }] }] }, { id: 3, name: "parent 3" }, { id: 4, name: "parent 4" }]; console.log(find(data, 9));

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