如何为 JS Array.includes() 提供一个 equals/hash 函数?

ccp*_*zza 2 javascript arrays predicate contains equals

有没有办法Array.prototype.includes()通过提供 equals+hash 谓词来处理非原始对象?

例如给出一个列表:

var list = [{id:111},{id:222},{id:333}];

console.log(list.includes({id:333});
// output: false
Run Code Online (Sandbox Code Playgroud)

从上面的例子看来,相等是由对象标识(即内存地址)而不是由值来完成的,这当然完全有意义并且是预期的。但是有没有办法提供一个相等函数,list.includes()以便使用 的原始值id来确定相等?

Arrays.includes()文档没有提及接受相等谓词什么。

Maj*_*awi 6

Array#includes 需要两个参数:

searchElement:要搜索的值。

fromIndex(可选):此数组中开始搜索 searchElement 的位置。

您可以Array#some改用:

const list = [{id:111},{id:222},{id:333}];

console.log( list.some(({id}) => id === 333) );
Run Code Online (Sandbox Code Playgroud)