javascript - `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`
这是正常的吗?
解决方案
它将停止迭代,直到第一次返回是true
.
没有返回,相当于 return of undefined
,所以会遍历所有数组
所以你错过了return
这个调试片段中的条件
[23, 357, 23, 34, 6, 37].some(function(value) {
console.log('DEBUG:', value % 2 === 0);
return value % 2 === 0
});
推荐阅读
- sql - SQL 2019:UTF8 编码字符的无效数据
- python - Python - 加速反向地理编码
- angular - 在新项目中使用旧的 Angular 模块,反之亦然
- python - 将 GCS 文件加载到 BigQuery 的 Cloud Functions 的 Python 单元测试
- mysql - 数据库连接池的安全性 - 将连接释放回设置错误的池
- bash - 多进程 awk 中 shuf 和 split 的行为
- python - 使用 Python 将 sys.stdout 写入多个日志文件?
- python - 如何根据 if 语句获取文件名?
- sql - 用于获取特定实例不存在于另一个表中的记录的 SQL 查询
- c# - 如何在 Windows 窗体中动态创建标签页内容?