You need to enable JavaScript to run this app. 使用forEach重写droids函数遇到语法及应用问题寻求帮助
优惠活动
大模型
产品
解决方案
定价
更多

使用forEach重写droids函数遇到语法及应用问题寻求帮助

现有代码的问题
  • forEach内部没有写判断逻辑:你只在forEach里打印了初始为空的result变量,既没有对比遍历到的元素是不是Droids,也没有给result做任何赋值,遍历完全没起作用。
  • 条件判断写的是赋值不是比较:if (result = "Droids")里用的是单等号=,这是赋值操作,会直接把result改成Droids,不管数组里有没有对应内容,这个判断都会成立,永远返回找到的结果。
  • 没考虑forEach不能提前终止的特性:原来的for循环找到Droids就直接return跳出函数了,但forEach里写return只能跳出当前这一次的遍历回调,会继续遍历剩下的元素,也没法直接终止外层的droids函数,所以需要单独加个变量标记有没有找到目标。
正确实现代码
function droids(arr) {
  let hasDroids = false;
  arr.forEach(item => {
    if (item === 'Droids') {
      hasDroids = true;
    }
  })
  return hasDroids ? 'Found Droids!' : "These are not the droids you're looking for.";
}

// 测试用例
const starWars = ["Luke", "Finn", "Rey", "Kylo", "Droids"] 
const thrones = ["Jon", "Danny", "Tyrion", "The Mountain", "Cersei"] 
console.log(droids(starWars)) // 预期输出: "Found Droids!"
console.log(droids(thrones)) // 预期输出: "These are not the droids you're looking for."

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 11:54:04