Recientemente me topé con un error causado por el método .includes() en javascript. Quería devolver el resultado exacto con respecto a mayúsculas y minúsculas, pero por alguna razón esto no funciona
["Ford", "BMW", "Fiat"].includes("bmw"); //returns false //expected result true Luego arreglé mi problema con la ayuda de .find() como se muestra a continuación:
!!["Ford", "BMW", "Fiat"].find(el => el.toUpperCase() === "bmw".toUpperCase()); //returns true ¿Puede alguien ayudarme a entender por qué includes no funciona en situaciones que no distinguen entre mayúsculas y minúsculas?
¿Por qué funcionaría sin distinción entre mayúsculas y minúsculas? Cita el MDN :
El método include
includes()determina si una matriz incluye un cierto valor entre sus entradas, devolviendo verdadero o falso según corresponda. [...] Nota: técnicamente hablando, include() usa el algoritmosameValueZeropara determinar si se encuentra el elemento dado.
sameValueZero se define como Object.is pero con +0 y -0 siendo iguales.
Siendo ese el caso, podemos probarlo:
> Object.is("bmw", "BMW") false > Object.is("bmw", "bmw") true