Estoy usando el método de filtro para obtener un elemento seleccionado de una lista de opciones. Pero me da el siguiente error:
Array.prototype.filter() espera que se devuelva un valor al final de la flecha function.eslintarray-callback-return
Mi función es la siguiente:
const getSelectValue = () => { const selectedList = get(state, `${name}`, []); if (isEmpty(selectedList) || isEmpty(options)) { return []; } const selectedSet = new Set(selectedList); return options.filter((item) => { if (item.value !== "Add type") return selectedSet.has(item.value); }); };¿Alguien que pueda encontrar lo que falta aquí?
La función de flecha proporcionada como devolución de llamada de filtro siempre debe devolver algún valor por esta regla de pelusa. Pero aquí...
item => { if(item.value !=="Add type") { return selectedSet.has(item.value); } ); ... no hay declaraciones de return if la condición es falsa; de ahí el error. Puede arreglar esto de muchas maneras diferentes; el más sencillo es simplemente agregar un return false; al final de la función. Otro enfoque es combinar dos condiciones:
item => { return item.value !=="Add type" && selectedSet.has(item.value) }Simplemente devuelva un valor si la declaración es falsa (después de if } entre corchetes) y el error debería desaparecer.
tienes que cambiar asi:
const getSelectValue = () => { const selectedList = get(state, `${name}`, []); if (isEmpty(selectedList) || isEmpty(options)) { return []; } const selectedSet = new Set(selectedList); return options.filter(item => { return item.value !=="Add type" && selectedSet.has(item.value); } ); };