Quiero filtrar una matriz con otra matriz. Si accedo a la función de filtro en su objeto, obtengo un:
TypeError: Cannot read properties of undefined (reading 'includes') at aspect_ratio (index.js?9101:72:1)Tengo todas mis funciones de filtro en un objeto como este:
export const filter_functions = { form_factor_landscape: (obj) => { return obj["Form Factor"] === "Landscape"; }, form_factor_portrait: (obj) => { return obj["Form Factor"] === "Portrait"; }, aspect_ratio: (obj) => state.current_features.includes(obj["Aspect Ratio"]), };En mis getters, quiero acceder al filtro aspect_ratio de esta manera:
export const getters = { filtered_items(state) { const filteredArray = [...state.allHandhelds].filter( filter_functions[state.current_sort] ); return filteredArray.filter(filter_functions.aspect_ratio); } }, };mi estado es asi:
export const state = () => ({ current_sort: "all_handhelds", current_features: ["a", "b", "c"], allHandhelds: [], });Parece que hay algún problema al acceder al objeto con las funciones de filtro. O más precisamente accediendo a la matriz current_features desde el estado.
Extrañamente, si solo tomo la función de filtro fuera del objeto y la incrusto directamente, todo funciona. Como esto:
return filteredArray.filter((obj) => state.current_features.includes(obj["Aspect Ratio"]));¿Alguna idea de lo que estoy haciendo mal?
Hola Lisa, también tengo este problema y lo resolví usando funciones de flecha. dentro de la función de filtro no puede acceder a las variables de clase "esto". Pero puedes usar las funciones de flecha para acceder a él.
como ejemplo, desea obtener el nombre de un objeto dentro de una matriz de objetos
esto reproduce el error
this.array.filter(function (el) { return el.id == this.variableClass.id })[0].nameesto lo arregló
this.array.filter((el) => { return el.id == this.variableClass.id })[0].name