每个()和其他迭代方法返回多少个?

时间:2016-01-03 02:54:32

标签: javascript

这是一些Javascripts数组方法的一般问题。以下面的例子为例:

var numbers = new Array(12, 5, 8, 130, 44);

function isBigEnough(element, index, array) {
  return element >= 10;
}

alert(numbers.every(isBigEnough));

这将返回FALSE。 当我第一次阅读迭代数组的这些方法(例如every,some,filter,forEach,map)时,我认为将为每个元素调用函数isBigEnough。所以在上面的例子中,我原以为isBigEnough会被调用五个单独的5次返回值。显然,情况并非如此。

我现在猜测该方法会调用该函数5次,但Return实际上不会返回任何内容,直到所有元素都为TRUE,或直到找到FALSE为止。

是否有人知道显示这些迭代方法的过程或流程的流程图或图形?

感谢

1 个答案:

答案 0 :(得分:1)

这些方法的Mozilla文档非常好。对于crypt()every,它明确指出方法会在找到falsy / truthy值时立即返回。

  

<强>每个

     

每个方法对数组中存在的每个元素执行一次提供的回调函数,直到找到一个回调返回伪值的值(转换为布尔值时变为false的值)。如果找到这样的元素,则every方法立即返回false。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every

  

<强>一些

     

some()为数组中的每个元素执行一次回调函数,直到找到一个回调返回true值的元素。如果找到这样的元素,some()会立即返回true

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some