首页 > 解决方案 > `array.some()` 不是找到第一个真值然后不执行剩余的迭代吗?以下代码段显示了其他情况

问题描述

我被告知, like 找到array.some()array.forEach()表达式匹配的第一个真值,然后不执行剩余的迭代。

以下按预期执行。

let result = [23, 357, 23, 34, 6, 37].some( function (value) {
    return value % 2 === 0;
});

console.log(result);

然而,当稍微调整一下并在节点交互终端中运行时,我发现它并没有像之前想象的那样在第一个真正的表达式处停止。

[23, 357, 23, 34, 6, 37].some( function (value) {
    console.log(value % 2 === 0);
    return value % 2 === 0;
});
// gives me `false, false, false, true, true`

这是正常的吗?

标签: javascript

解决方案


它将停止迭代,直到第一次返回是true.

没有返回,相当于 return of undefined,所以会遍历所有数组

所以你错过了return这个调试片段中的条件

[23, 357, 23, 34, 6, 37].some(function(value) {
  console.log('DEBUG:', value % 2 === 0);
  return value % 2 === 0
});


推荐阅读