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

JS比较数组元素返回布尔值:数组升序校验函数异常问题

代码问题分析

你编写的代码存在以下核心问题:

  • 校验逻辑错误:只要数组中存在任意一对元素满足arr[i] < arr[k+1]就会把结果永久设为true,后续即便出现降序的元素对也不会修改结果,因此只要乱序/降序数组中存在任意一组前小后大的元素,就会错误返回true
  • 冗余的双层循环:校验数组升序仅需对比相邻元素,单层循环即可完成,双层循环会将时间复杂度从O(n)拉高到O(n²),完全没有必要
  • 数组越界风险:循环条件写为i <= arr.length、k <= arr.length,而数组下标范围是0 ~ arr.length - 1,访问arr[arr.length]会得到undefined,会导致大小比较逻辑出现不可预期的错误
  • 初始值设置错误:初始结果设为false,不符合“默认认为数组升序,出现降序才标记为不通过”的校验逻辑
修复方案

仅需单层循环逐个对比相邻元素即可满足需求,修复后的代码如下:

function inAscOrder(arr) {
  // 长度小于2的数组天然符合升序要求
  if (arr.length <= 1) return true
  for (let i = 1; i < arr.length; i++) {
    // 只要存在任意一个元素小于等于前一个元素,就不符合严格升序要求
    if (arr[i] <= arr[i-1]) {
      return false
    }
  }
  // 所有相邻元素都满足严格升序要求
  return true
}

修改后即可全部通过你给出的四条测试用例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:27:03