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

JavaScript函数checkIfHealthyColony逻辑错误排查求助

修正checkIfHealthyColony函数的逻辑错误

你的代码逻辑完全不符合需求,导致测试用例失败,核心问题如下:

  • 错误将ant.type === 'worker'作为健康判断依据,需求中根本不关心worker蚁的存在,只需要判断是否有僵尸蚁
  • 遍历过程中只要碰到worker蚁或有解毒剂就直接返回true,这会导致存在僵尸蚁但无解毒剂的场景下,因为蚁群里有worker蚁,函数会提前返回true,完全忽略了僵尸蚁的存在

正确实现代码(两种写法)

写法1:使用数组some方法(简洁高效)

function checkIfHealthyColony(colony, hasAntidote) {
  // 有解毒剂时直接判定健康
  if (hasAntidote) {
    return true;
  }
  // 检查蚁群中是否存在僵尸蚁
  const hasZombie = colony.some(ant => ant.type === 'zombie');
  // 没有僵尸蚁则健康,否则不健康
  return !hasZombie;
}

写法2:使用for循环(适合基础学习阶段理解)

function checkIfHealthyColony(colony, hasAntidote) {
  if (hasAntidote) {
    return true;
  }
  // 遍历整个蚁群查找僵尸蚁
  for (const ant of colony) {
    if (ant.type === 'zombie') {
      // 找到僵尸蚁,直接返回不健康
      return false;
    }
  }
  // 遍历结束未发现僵尸蚁,返回健康
  return true;
}

逻辑说明

  1. 优先判断hasAntidote:只要有解毒剂,不管蚁群状态如何,直接返回true,符合需求
  2. 无解毒剂时,遍历蚁群检查是否存在僵尸蚁:
    • 一旦找到僵尸蚁,立即返回false(存在僵尸且无解毒剂,不符合健康条件)
    • 遍历完所有蚂蚁都没找到僵尸蚁,返回true(无僵尸蚁,符合健康条件)

用你提供的exampleColony测试:

  • 当hasAntidote = false时,函数会找到type为zombie的adam,返回false,符合测试要求
  • 当hasAntidote = true时,直接返回true
  • 无僵尸蚁的蚁群会返回true,三个测试用例全部通过

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 09:25:19