Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

124
Vistas
filtro de matriz anidada de objetos js basado en matriz
const cars = [ { brand: "Chevrolet", model: "Camaro", dates: (3) ['2022/05/28', '2022/06/02', '2022/06/05'] }, { brand: "Chevrolet", model: "Camaro", dates: (3) ['2022/05/30', '2022/06/02', '2022/06/05'] }, { brand: "Chevrolet", model: "Camaro", dates: (3) ['2022/05/28', '2022/06/01', '2022/06/05'] } ]

Quiero filtrar mi matriz de objetos en función de otra matriz

 const arr2 = ["2022/06/02", "2022/06/05"];

Quiero obtener resultados como ese;

 [ { brand: "Chevrolet", model: "Camaro", dates: (3) ['2022/05/28', '2022/06/02', '2022/06/05'] }, { brand: "Chevrolet", model: "Camaro", dates: (3) ['2022/05/30', '2022/06/02', '2022/06/05'] } ]

utilicé incluye

 let filtered = cars.filter((item) => item.dates.includes(arr2))

Tengo una matriz vacía.

cuando paso una cadena para incluir, obtuve una matriz filtrada.

 let filtered = cars.filter((item) => item.dates.includes("2022/06/02"))

No, necesito comparar arr2 . Su longitud podría cambiarse.

¿Cómo puedo pasar una matriz a la función cars.include()

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

[{}, {}].includes({})

devuelve false porque compara objetos por referencia de objeto, no valores en el objeto, por lo que es equivalente a

 const a = {}; // new, empty object const b = {}; // a different new, empty object const c = {}; // yet another new, empty object const answer = [a, b].includes(c) // false

Además, ¡las matrices son objetos!

Por eso, cuando pasas un objeto (sea o no una matriz) a Array.prototype.includes, devuelve false a menos que ese mismo objeto sea un elemento de la matriz.

Probablemente quieras algo como esto:

 // Function that returns true if two arrays intersect const includesAny = (arr1, arr2) => arr1.some(e1 => arr2.includes(e1)); const filterCarsByDates = ( datesSought => cars.filter( car => includesAny( cars.dates, datesSought ) ) );
about 4 years ago · Juan Pablo Isaza Denunciar

0

 let cars = [ { brand: "Chevrolet", model: "Camaro", dates: ['2022/05/28', '2022/06/02', '2022/06/05'] }, { brand: "Chevrolet", model: "Camaro", dates: ['2022/05/30', '2022/06/02', '2022/06/05'] }, { brand: "Chevrolet", model: "Camaro", dates: ['2022/05/28', '2022/06/01', '2022/06/05'] } ]; let arr2 = ["2022/06/02", "2022/06/05"]; // A method that checks if `src` array contains all elements of `target` array let checker = (src, target) => target.every(v => src.includes(v)); let filtered = cars.filter((item) => checker(item.dates, arr2)); console.log(filtered);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar Array Filter con Set, Buscar en Set es más rápido que Array.

 const cars = [ { brand: "Chevrolet", model: "Camaro", dates: ["2022/05/28", "2022/06/02", "2022/06/05"], }, { brand: "Chevrolet", model: "Camaro", dates: ["2022/05/30", "2022/06/02", "2022/06/05"], }, { brand: "Chevrolet", model: "Camaro", dates: ["2022/05/28", "2022/06/01", "2022/06/05"], }, ]; const arr2 = ["2022/06/02", "2022/06/05"]; const result = cars.filter((car) => { const set = new Set(car.dates); return arr2.every((date) => set.has(date)); }); console.log(result);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda