You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确处理checkifHaveBomb函数的return语句并优化写法?

数组查找炸弹的函数优化

现有代码实现

当前可用写法

const checkifHaveBomb = (column, row) => {
    let isBomb = false
    activeBombContainer.forEach(element => {
        if (element.column === column && element.row === row) {
            isBomb = true;
            return;
        }
    })
    if (isBomb) return true;
    else
        return false;
}

首次尝试(未生效)

const checkifHaveBomb = (column, row) => {
    activeBombContainer.forEach(element => {
        if (element.column === column && element.row === row) {
            return true;
        }
    })
    return false;
}

问题原因

你对return作用域的判断完全正确:forEach的回调函数是独立作用域,回调里的return只会终止当前回调的执行,不会跳出外层的checkifHaveBomb函数,所以首次尝试里的return true根本不会影响外层函数的返回值,最终函数总会走到return false。

更优写法

直接使用数组原生的some方法,该方法会遍历数组,找到第一个符合条件的元素后立即终止遍历并返回true,遍历完成未找到匹配项则返回false,完全贴合你的需求:

// 基础写法
const checkifHaveBomb = (column, row) => {
    return activeBombContainer.some(element => {
        return element.column === column && element.row === row;
    });
}

// 简化为隐式返回的箭头函数
const checkifHaveBomb = (column, row) => 
    activeBombContainer.some(element => 
        element.column === column && element.row === row
    );

另外,你当前可用写法里的if (isBomb) return true; else return false;可以直接简化为return isBomb;,因为isBomb本身就是布尔值,无需额外判断。

内容的提问来源于stack exchange,提问作者NicolaL1995

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:10:04