A ver, tal como haces el resultado que obtienes es el esperado, si fallan los tipos es lo que hay...
Así q si trabajas tal cual no hay manera que includes te funcione si los tipos no casan ya que includes
realiza una comparación estricta (===
), lo que significa que si los tipos no coinciden (por ejemplo, comparar un número con una cadena), la comparación fallará.
Una solución es asegurarte de que ambos, los valores dentro del array itemIds
y itemId
, sean convertidos al mismo tipo antes de hacer la comparación. Puedes hacerlo utilizando las clases String
o Number
, dependiendo del formato que prefieras convertir todos los valores.
Lo más normal es que quieras convertir todos los tipos a cadenas, ya que si intentas convertir todos los tipos a números fallará cuando haya alfanuméricos.
En este código alternativo se convierte todos los elementos del array y el itemId
a cadenas:
itemIds.map(String).includes(String(itemId));
Ese código es equivalente a (por si lo ves más claro):
const arrayCadenas = itemIds.map(String);
const itemCadena = String(itemId);
arrayCadenas.includes(itemCadena);
Esa sería la solución. Otra idea sería usar el método find() de los arrays, que te permite escribir tus propias sentencias de comprobación de que existe el elemento que buscas, que pueden ser comprobando o sin comprobar los tipos.
Saludos!