Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

93
Views
Filtrar matriz de objetos con matriz anidada

entonces estoy tratando de configurar un filtro anidado en una matriz de objetos. Lo que pasa es que el filtro se aplica dentro del objeto en una clave que es otra matriz de objetos.

aquí está el código:

 const items = [ { name: "123", id: 1, value: true, arr: [{ id: 1 }] }, { name: "456", id: 2, value: false, arr: [{ id: 2 }] }, { name: "456", id: 2, value: false, arr: [{ id: 3 }] }, { name: "456", id: 2, value: false, arr: [{ id: 4 }] }, { name: "456", id: 2, value: false, arr: [{ id: 5 }] }, { name: "456", id: 2, value: false, arr: [{ id: 6 }] }, ]; const newArray = items.filter((objects) => { objects.arr.filter((item) => { if (item.id === 2) { return objects; } }); }); console.log(newArray);

No estoy seguro de dónde colocar el retorno porque en esta situación solo obtengo una matriz vacía.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Debe verificar que la matriz anidada contenga la id deseada y devolver el resultado al método de filtro.

 const items = [{ name: "123", id: 1, value: true, arr: [{ id: 1 }] }, { name: "456", id: 2, value: false, arr: [{ id: 2 }] }, { name: "456", id: 2, value: false, arr: [{ id: 3 }] }, { name: "456", id: 2, value: false, arr: [{ id: 4 }] }, { name: "456", id: 2, value: false, arr: [{ id: 5 }] }, { name: "456", id: 2, value: false, arr: [{ id: 6 }] }], result = items.filter(({ arr }) => arr.some(({ id }) => id === 2)); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Report

0

Use Array#some para verificar si el arr actual tiene un elemento con id igual a 2:

 const items = [ { name: "123", id: 1, value: true, arr: [{ id: 1 }] }, { name: "456", id: 2, value: false, arr: [{ id: 2 }] }, { name: "456", id: 2, value: false, arr: [{ id: 3 }] }, { name: "456", id: 2, value: false, arr: [{ id: 4 }] }, { name: "456", id: 2, value: false, arr: [{ id: 5 }] }, { name: "456", id: 2, value: false, arr: [{ id: 6 }] } ]; const newArray = items.filter(({ arr = [] }) => arr.some(({ id }) => id === 2) ); console.log(newArray);

about 4 years ago · Juan Pablo Isaza Report

0

Como contiene solo un object en arr , puede acceder a este objeto utilizando el índice [0] .

Demostración de trabajo:

 const items = [ { name: "123", id: 1, value: true, arr: [{ id: 1 }] }, { name: "456", id: 2, value: false, arr: [{ id: 2 }] }, { name: "456", id: 2, value: false, arr: [{ id: 3 }] }, { name: "456", id: 2, value: false, arr: [{ id: 4 }] }, { name: "456", id: 2, value: false, arr: [{ id: 5 }] }, { name: "456", id: 2, value: false, arr: [{ id: 6 }] }, ]; const newArray = items.filter((obj) => { if (obj.arr[0].id === 2) { return obj; } }); console.log(newArray);

Le respondí según el problema al que se enfrenta, pero si tiene varios objetos en su arr , puede continuar con el método Array.some() como lo sugieren otras respuestas.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!