绑定到Array.includes [javascript]

时间:2017-03-30 10:34:53

标签: javascript bind

我在查找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)不起作用。

1 个答案:

答案 0 :(得分:2)

[6,7,8,9,3].some(array2)无法正常工作,因为Array.prototype.some调用带有3个参数的函数检查:value,index,整个数组,而Array.prototype.includes需要2 arguments。第二个参数是从索引开始的索引。

  

arr.includes(searchElement,fromIndex)

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