Quiero filtrar esta matriz de Objeto:
const testArray = [{ id: 4, filters: ["Norway", "Sweden"] }, { id: 2, filters :["Norway", "Sweden"] }, { id: 3, filters:["Denmark", "Sweden"] }]con el filtro
const myFilter=["Norway", "Sweden"]Sin embargo, mi código simplemente devuelve []? Lo que he probado hasta ahora:
const testArray = [{ id: 4, filters: ["Norway", "Sweden"] }, { id: 2, filters :["Norway", "Sweden"] }, { id: 3, filters:["Denmark", "Sweden"] }] const myFilter=["Norway", "Sweden"] console.log(testArray.filter(e=>e.filters===myFilter))Puede usar Array#every para probar la igualdad + de dos matrices de la siguiente manera:
const output = testArray.filter( e => e.filters.every( filter => myFilter.includes(filter) ) ); const testArray = [{ id: 4, filters: ["Norway", "Sweden"] }, { id: 2, filters :["Norway", "Sweden"] }, { id: 3, filters:["Denmark", "Sweden"] }], myFilter = ["Norway", "Sweden"], output = testArray.filter( e => e.filters.every( filter => myFilter.includes(filter) ) ); console.log(output) NOTA : Array#every como se usa aquí solo confirma que cada elemento de cada matriz está en la otra, independientemente del orden en que aparecen los elementos .