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

JS循环编写getTheRange极差函数时range值重复问题排查

问题根因

你的循环逻辑完全多余:循环每跑一轮就往结果数组里追加一次range,测试用例的输入数组长度为7,就会追加7个重复的8,加上之前存入的最小值、最大值,最终数组长度为9,和预期长度3不符。
另外你直接调用Math.min、Math.max拿极值的写法不符合题目要求——题目明确要求用循环实现,核心考点就是通过遍历数组自行比对找出最大、最小值,不是直接调用内置API取巧。

正确实现

按照题目要求,只需要一次遍历即可完成极值查找,循环结束后计算一次极差,最终按顺序组装三个元素返回即可,不要在循环内部做结果追加操作:

const getTheRange = arr => {
  // 初始化最大、最小值为数组首项
  let low = arr[0]
  let high = arr[0]

  // 单循环遍历数组,同步更新极值
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] < low) low = arr[i]
    if (arr[i] > high) high = arr[i]
  }

  const range = high - low
  return [low, high, range]
}

// 功能验证
console.log(getTheRange([3, 2, 5, 4, 7, 9, 10])) // 输出 [2, 10, 8],完全符合预期
补充

如果不考虑题目“必须使用循环”的限制,你甚至不需要写循环,直接计算后返回即可,代码更简洁:

const getTheRange = arr => {
  const low = Math.min(...arr)
  const high = Math.max(...arr)
  return [low, high, high - low]
}

但这种写法绕过了循环考察点,只能实现功能,无法满足题目答题要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:57:20