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

JavaScript实现isSorted函数时如何使用for-of循环并解决代码报错问题

问题分析与修复方案

原代码存在的问题

  • 引用了未定义的number1、number2变量,运行时会直接抛出引用错误
  • return true写在for-of循环体内,第一次循环就会直接返回结果,不会遍历后续元素,逻辑完全中断
  • 思路偏差:判断数组是否升序不需要额外声明数组存储元素,只要逐一比较相邻元素的大小关系即可,只要存在一对相邻元素不符合「后一个 >= 前一个」的规则,数组就不是升序排列的

修复后代码(符合for-of循环使用要求)

/**
 * @param {Array<number>} array - an array of numbers
 * @returns {boolean} whether or not the given array is sorted
 */
function isSorted(array) {
  // 边界处理:空数组、单元素数组默认已排序
  if (array.length <= 1) {
    return true;
  }
  // 存储上一个元素,初始为第一个元素
  let prev = array[0];
  // 用entries()获取索引+值的迭代器,配合for-of循环使用
  for (const [index, current] of array.entries()) {
    // 第一个元素不需要比较,直接跳过
    if (index === 0) continue;
    // 只要存在当前元素小于前一个元素,直接返回未排序
    if (current < prev) {
      return false;
    }
    // 更新前一个元素为当前元素,用于下一轮比较
    prev = current;
  }
  // 所有元素遍历完成,符合升序要求
  return true;
}

测试验证

你提供的两个测试用例运行后均会输出Test PASSED.:

  1. 输入[1,2,3]时,相邻元素依次比对均符合升序,返回true
  2. 输入[3,2,3]时,第二个元素2小于前一个元素3,直接返回false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:27:03