¿Hay alguna manera de hacer que Array.prototype.includes() también funcione con objetos no primitivos al proporcionar un predicado igual a hash?
Por ejemplo dada una lista:
var list = [{id:111},{id:222},{id:333}]; console.log(list.includes({id:333}); // output: false Del ejemplo anterior, parece que la igualdad se realiza por la identidad del objeto (es decir, la dirección de la memoria) y no por el valor, lo que tiene, por supuesto, sentido total y se espera. Pero, ¿hay alguna manera de proporcionar una función de igualdad a list.includes() para que el valor primitivo de id se use para determinar la igualdad?
La documentación de Arrays.includes() no menciona nada acerca de aceptar un predicado de igualdad.
Array#includes toma dos parámetros:
searchElement: el valor a buscar.
fromIndex (opcional): la posición en esta matriz en la que comenzar a buscar searchElement.
Puedes usar Array#some en su lugar:
const list = [{id:111},{id:222},{id:333}]; console.log( list.some(({id}) => id === 333) );