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

93
Visualizações
Filtro de matriz que devuelve toda la matriz

Estoy tratando de filtrar una matriz con objetos anidados como este:

 const items = [ { "id": 1, "name": "test1", "subitems": [ { "id": 2, "name": "test2", "subsubitems": [ { "id": 3, "name": "test3", }, { "id": 4, "name": "test4", } ] } ] }, { "id": 10, "name": "test10", "subitems": [ { "id": 20, "name": "test20", "subsubitems": [ { "id": 30, "name": "test30", } ] } ] } ] const filteredResults = items.filter((item) => item.subitems.filter((subitem) => subitem.subsubitems.filter((subsubitem) => subsubitem.name.includes('test3') ) ) ) console.log(filteredResults)

Pero no está filtrando correctamente, se está devolviendo la matriz original. En este momento solo intento filtrar a nivel de subsubelementos. En última instancia, quiero devolver una matriz con coincidencias para nombrar en cualquier nivel.

Entonces test2 devolvería una matriz como esta:

 [ { "id": 1, "name": "test1", "subitems": [ { "id": 2, "name": "test2", "subsubitems": [ { "id": 3, "name": "test3", }, { "id": 4, "name": "test4", } ] } ] } ]

Y test3 devolvería una matriz como esta:

 [ { "id": 1, "name": "test1", "subitems": [ { "id": 2, "name": "test2", "subsubitems": [ { "id": 3, "name": "test3", } ] } ] } ]

Y la test devolvería todo.

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

0

Prueba esto:

 const items = [ { id: 1, name: "test1", subitems: [ { id: 2, name: "test2", subsubitems: [ { id: 3, name: "test3", }, { id: 4, name: "test4", }, ], }, ], }, { id: 10, name: "test10", subitems: [ { id: 20, name: "test20", subsubitems: [ { id: 30, name: "test30", }, ], }, ], }, ]; const filterItems = (items, filter) => { const result = []; items.forEach((item) => { if (item.name === filter) { result.push(item); } item.subitems.forEach((subitem) => { if (subitem.name === filter) { result.push(item); } subitem.subsubitems.forEach((subsubitem) => { if (subsubitem.name === filter) { result.push(item); } }); }); }); console.log("filtered", result); }; filterItems(items, "test10");

El resultado es:

 filtered [ { id: 10, name: 'test10', subitems: [ [Object] ] } ]
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