我在查找array1中是否存在array2中的任何元素时遇到了麻烦:
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)
不起作用。
答案 0 :(得分:2)
[6,7,8,9,3].some(array2)
无法正常工作,因为Array.prototype.some
调用带有3个参数的函数检查:value,index,整个数组,而Array.prototype.includes
需要2 arguments。第二个参数是从索引开始的索引。
arr.includes(searchElement,fromIndex)
因此,每次下一次调用都会询问您的第一个数组是否包含从给定索引开始的给定值。