绑定到 Array.includes [javascript]

binding to Array.includes [javascript]

我在查找 array2 中的任何元素是否存在于 array1 中时遇到问题:

array2 = [].includes.bind([1,2,3]);
array2(1);   // returns true
array2(9);   // returns false

[5,6,7,8,9].some(array2);        // returns false  GOOD
[3,6,7,8,9].some(array2);        // returns true   GOOD
[6,7,8,9,3].some(array2);        // returns false  OOPS!

[6,7,8,9,3].some(function(i){return array2(i)});  //returns true

显然我知道问题的一种解决方案,但我想知道为什么 [...].some(array2) 不能完全工作。

[6,7,8,9,3].some(array2) 不起作用,因为 Array.prototype.some 使用 3 个参数调用检查函数:值、索引、整个数组,而 Array.prototype.includes 采用 2 arguments。第二个参数是要搜索的起始索引。

arr.includes(searchElement, fromIndex)

所以每次下一次调用都会询问您的第一个数组是否包含从给定索引开始的给定值。