javascript - 为什么 for loop 和 forEach 的工作方式不同?
问题描述
这是在给定数组中查找重复项的简单 LeetCode 函数。
function findDuplicates(nums) {
let hash = {}
for (let i = 0; i < nums.length; i++) {
if (!hash[nums[i]]) {
hash[nums[i]] = true
} else {
return true
}
}
return false
}
它工作得很好。但是如果我们改用 forEach 方法会发生什么呢?
function findDuplicates(nums) {
let hash = {}
nums.forEach(el => {
if (!hash[el]) {
hash[el] = true
} else {
return true
}
});
return false
}
此功能不适用于 的相同输入[0,4,5,3,0,6]
。您能否解释一下为什么这两种解决方案会给出不同的结果?或者只是指出我正确的方向。
解决方案
return语句相当于break,for循环可以被打破,foreach不能。
推荐阅读
- python - 取决于第 1 行的多行(多行)的 Python 正则表达式
- plugins - 无法加载 Maya 插件
- python - 当资源管理变量在其范围之外使用时会发生什么?
- android - 通过父活动级别按钮在片段之间导航
- php - PHP docker-php-api:过滤器规范(OpenAPI)
- flutter - 无法在 VideoPlayer 中播放来自服务器 url 的视频:Flutter
- guzzle - 标头的 Guzzle OAuth 1.0 问题,401 错误请求
- awk - 保留包含字符的每个单词的前 3 个字符
- c++ - 在另一个同步函数中执行异步函数会冻结程序
- php - 如何使用匹配表达式而不是 switch 表达式