Estoy tratando de eliminar los espacios finales de una frase mientras filtro mis datos, pero el método trim() no parece estar eliminando los espacios como se esperaba si trato de mutar los datos dentro del método de filtro.
Aquí está mi código:
{item.fields .filter(item =>item.text.trim() === description) .map((field, i) => { return (<div></div>) })} ¿Alguna idea de por qué el método trim() no funcionaría?
(Supongo que el item en la devolución de llamada de su filter debe ser field . Técnicamente no importa, pero es mucho más fácil de leer).
...si trato de mutar los datos dentro del método de filtro...
La llamada trim funciona, pero no conserva el resultado por nada. No estás mutando los datos. Solo lo usaste temporalmente cuando hacías === .
Puede recortar nuevamente en la devolución de llamada del map :
{item.fields .filter(field => field.text.trim() === description) .map((field, i) => { return <div>{field.text.trim()}</div>; // <=== }) } O puede hacer que su devolución de llamada de filter haga una doble función, recortando el campo y haciendo la comparación. Sin embargo, ese tipo de efectos secundarios en las devoluciones de llamada de filter a menudo se consideran una mala práctica:
{item.fields .filter(field => { field.text = field.text(); // Side effect, often considered poor practice return field.text === description; }) .map((field, i) => { return <div>{field.text}</div>; }) } O cuando recibe item.fields , puede recortarlos una vez para que no tenga que hacerlo en cada renderizado.