Estoy tratando de filtrar una matriz con coincidencias parciales de la totalidad de otra matriz. Por ejemplo, las matrices se describen a continuación:
Array1 = categories: 292300, categories: 300, categories: 292500280 Array2 = 300, 498Con el filtro, esperaría devolver:
NewArray = categories: 292300, categories: 300¿Cuál es la mejor manera de implementar esto? Probé el siguiente código sin suerte:
const NewArray = Array1.filter(Array1 => !(Array1.categories.includes(Array2)))¿Por qué la nueva matriz también incluye 292300 mientras que no está incluida en la matriz2?
Pero si desea filtrar array1 con datos incluidos en array2, ahí está la solución
const NewArray = Array1.filter(({ categories }) => Array2.includes(categories)) const Array1 = [{ categories: 292300 }, { categories: 300 }, { categories: 292500280 }]; const Array2 = [300, 498]; const newArray = []; Array2.forEach((el) => { Array1.forEach((element) => { if (element.categories.toString().includes(el.toString())) { newArray.push(element); } }); });Para hacer coincidencias parciales solo necesita analizar int a string
const arr1 = [{categories: 292300}, {categories: 300}, {categories: 292500280}]; const arr2 = [300, 498]; const result = arr1.filter(({ categories }) => arr2.some((e) => String(categories).includes(String(e)))); console.log(result); .as-console-wrapper {max-height: 100% !important; top: 0}