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

174
Visualizações
Matriz de filtros de objetos infinitamente anidados

Digamos que tengo una matriz de objetos anidados como:

 const data = [ { id: 1, children:[ { id: 2, children:[ { id: 3, children:[ { id: 4, children: [], }, { id: 5, children: [], } ], }, ], }, ], }, { id: 8, children:[ { id: 9, children:[ { id: 10, children:[], }, ], }, ], }, ];

Y me gustaría devolver una nueva matriz con id: 3 excluidos, por ejemplo. Entonces se convertiría en:

 const data = [ { id: 1, children:[ { id: 2, children:[], }, ], }, { id: 8, children:[ { id: 9, children:[ { id: 10, children:[], }, ], }, ], }, ];

El ID excluido puede ser de cualquier nivel, y tanto él como sus elementos secundarios deben eliminarse. ¿Cuál es el mejor enfoque para hacer esto? He intentado varias otras soluciones sin suerte hasta ahora.

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

0

Puedes usar recursividad y Array.reduce ,..

p.ej.

 const data=[{id:1,children:[{id:2,children:[{id:3,children:[{id:4,children:[]},{id:5,children:[]}]},]},]},{id:8,children:[{id:9,children:[{id:10,children:[]},]},]},] function removeId(data, id) { return data.reduce((a,v) => { if (v.id !== id) a.push({...v, children: removeId(v.children, id)}); return a; }, []); } const r = removeId(data, 3); console.log(r);

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar una combinación de JSON.parse y JSON.stringify para llegar a cada nodo del objeto:

 JSON.parse(JSON.stringify(data, (key, value) => { // If children is an array and it contains an id equal to 3, we filter out that child if (key === 'children' && value instanceof Array) return value.filter(x=>x.id!==3); // Otherwise we don't intervene return value; }));

Ejemplo:

 const data = [ { id: 1, children:[ { id: 2, children:[ { id: 3, children:[ { id: 4, children: [], }, { id: 5, children: [], } ], }, ], }, ], }, { id: 8, children:[ { id: 9, children:[ { id: 10, children:[], }, ], }, ], }, ]; console.log(JSON.parse(JSON.stringify(data, (key, value) => { if (key === 'children' && value instanceof Array) return value.filter(x=>x.id!==3); return value; })));

Dado que los navegadores implementan de forma nativa los dos métodos JSON, esta solución suele ser más rápida

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