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

181
Visualizações
¿Cómo filtro en profundidad la matriz y mantengo la estructura del árbol de la matriz?

Necesito eliminar elementos de matrices anidadas. He hecho esto con éxito, sin embargo, necesito mantener la estructura completa del árbol. El código actual genera el objeto de las things y elimina el elemento donde el name es igual a 'child thing 1' , sin embargo, mi resultado pierde muchos otros datos del árbol original.

Estoy usando lodash y deepdash ya que estaré trabajando con objetos con muchos niños.

 deepdash(_); let things = { type: 'app', info: [], things: [{ name: 'something', good: false, }, { name: 'another thing', good: true, children: [{ name: 'child thing 1', good: false, }, { name: 'child thing 2', good: true, }, { name: 'child thing 3', good: false, }], }, { name: 'something else', good: true, subItem: { name: 'sub-item', good: false, }, subItem2: { name: 'sub-item-2', good: true, }, }], }; let filtrate = _.filterDeep(things, (value, key, parent) => { if (key == 'name' && parent.name !== 'child thing 1') return true; }); console.log({ filtrate });
 .as-console-wrapper { min-height: 100%!important; top: 0; }
 <script src="https://cdn.jsdelivr.net/npm/lodash/lodash.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/deepdash/browser/deepdash.min.js"></script>

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

0

No está claro a partir de su pregunta cuál es el resultado esperado, como lo señaló @grodzi en los comentarios. Sin embargo, parece que solo está buscando una manera de eliminar rápidamente subestructuras en un objeto mientras mantiene su integridad general. Lodash proporciona algunas funciones ingeniosas que simplifican tareas como estas.

Dos que ayudarían con la tarea en cuestión son get y omit

 const pathsToRemove = ['things.1.children.0']; // use object dot notation (.) even for array elements const restructure = (object, pathsToRemove) => pathsToRemove.reduce((acc, path) => { const parentPath = path.split('.').slice(0,-1).join('.'); const [targetPath] = path.split('.').slice(-1); let parent = _.get(acc, parentPath); if (parent.constructor === Array) { // this block is to prevent empty array items parent.splice(+targetPath, 1); return acc; } return _.omit(acc, path); }, object); console.log(JSON.stringify( restructure(things, pathsToRemove), null, 4 ));

Creo que algo como esto haría el trabajo. Sin embargo, asegúrese de verificar esto usted mismo, preferiblemente con pruebas si es probable que se implemente.

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