首页 > 解决方案 > 为什么 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]。您能否解释一下为什么这两种解决方案会给出不同的结果?或者只是指出我正确的方向。

标签: javascriptarraysloops

解决方案


return语句相当于break,for循环可以被打破,foreach不能。


推荐阅读