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

JavaScript函数findMyCampsites的else if语句问题求助

问题分析与修复方案

核心问题

你的代码存在几个关键错误,导致else if的提示字符串无法生效:

  • 循环内的判断逻辑完全错误:当前else if是对单个营地判断“已预订+景观不符+人数不符”,但这和“没有任何符合条件的营地”不是一回事,大部分不符合要求的营地都不会触发这个条件。
  • 提示字符串未被处理:就算触发了else if,那个字符串只是字面量,既没赋值给变量也没return出去,函数最后还是会返回空的siteNumbers数组。
  • return之后的代码不会执行:你在return siteNumbers之后写的两次函数调用永远不会运行,因为return语句会直接终止函数。
  • 函数调用参数错误:第一个调用findMyCampsites(campgrounds,"ocean",4,8)传了4个参数,但函数只定义了3个形参,多出来的8会被忽略。

修复步骤

  1. 先通过循环收集所有符合条件的营地编号,不在循环内处理“无符合营地”的逻辑。
  2. 循环结束后,判断siteNumbers是否为空:如果为空,返回提示字符串;否则返回数组。
  3. 把函数调用移到函数外部,避免被return语句阻断。
  4. 修正函数调用的参数数量,和函数定义匹配。

修正后的代码

let campgrounds = [
  { number: 1, view: "ocean", partySize: 8, isReserved: false },
  { number: 5, view: "ocean", partySize: 4, isReserved: false },
  { number: 12, view: "ocean", partySize: 4, isReserved: true },
  { number: 18, view: "forest", partySize: 4, isReserved: false },
  { number: 23, view: "forest", partySize: 4, isReserved: true },
];

function findMyCampsites(campgrounds, view, partySize) {
  let siteNumbers = [];
  for (let i = 0; i < campgrounds.length; i++) {
    // 只收集符合条件的营地编号
    if (!campgrounds[i].isReserved && campgrounds[i].view === view && campgrounds[i].partySize >= partySize) {
      siteNumbers.push(campgrounds[i].number);
    }
  }
  // 循环结束后统一判断是否有可用营地
  return siteNumbers.length > 0 ? siteNumbers : "Sorry, no campsites with that view are available to host your party";
}

// 函数调用移到外部,修正参数数量
console.log(findMyCampsites(campgrounds, "ocean", 4));
console.log(findMyCampsites(campgrounds, "forest", 5)); // 测试无符合条件的场景

额外优化建议

可以用数组的filter+map方法简化循环逻辑,代码更简洁易读:

function findMyCampsites(campgrounds, view, partySize) {
  const validSites = campgrounds
    .filter(camp => !camp.isReserved && camp.view === view && camp.partySize >= partySize)
    .map(camp => camp.number);
  
  return validSites.length ? validSites : "Sorry, no campsites with that view are available to host your party";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:33:27