如何向 JS Array.includes() 提供 equals/hash 函数? [重复]

问题描述 投票:0回答:1

有没有办法通过提供 equals+hash 谓词来让

Array.prototype.includes()
也能处理非原始对象?

例如给定一个列表:

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

console.log(list.includes({id:333});
// output: false

从上面的例子来看,相等性是通过对象标识(即内存地址)而不是通过值来完成的,这当然是完全有意义的并且是预期的。但是有没有办法为

list.includes()
提供相等函数,以便使用
id
的原始值来确定相等性?

Arrays.includes() 文档没有提及任何有关接受相等谓词的内容。

javascript arrays contains equality predicate
1个回答
6
投票

Array#includes
需要两个参数:

searchElement:要搜索的值。

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

您可以使用

Array#some
代替:

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

console.log( list.some(({id}) => id === 333) );

© www.soinside.com 2019 - 2024. All rights reserved.