绑定到 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)
所以每次下一次调用都会询问您的第一个数组是否包含从给定索引开始的给定值。
我在查找 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)
所以每次下一次调用都会询问您的第一个数组是否包含从给定索引开始的给定值。