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

JS中如何检查数字数组是否按从高到低降序排序?

JS检查数组是否降序排列的实现方案

核心逻辑为遍历数组比对相邻元素大小,只要存在后一项大于前一项的情况,即可判定不符合降序规则。由于你给出的示例数组为字符串类型的数字,实现时需要先做数值转换,避免出现字符串按字典序比对的错误(比如'11' > '5'按字符串比对会返回false)。

方法1:基础for循环实现(兼容性最优)

该方案兼容所有JS运行环境,且遍历到不符合规则的元素时会直接终止执行,性能损耗最低。

function isDescending(arr) {
  // 空数组、仅含1个元素的数组默认符合降序要求
  if (arr.length <= 1) return true
  for (let i = 0; i < arr.length - 1; i++) {
    const current = Number(arr[i])
    const next = Number(arr[i + 1])
    // 后一项大于前一项,不符合降序
    if (next > current) {
      return false
    }
  }
  return true
}

// 测试用例
const validArr = ['15','14','11','5']
console.log(isDescending(validArr)) // 输出:true

const invalidArr = ['15','17','11','5']
console.log(isDescending(invalidArr)) // 输出:false

方法2:Array.every 简洁写法

ES5及以上环境可以用every方法简化代码,逻辑和for循环完全一致:

function isDescending(arr) {
  return arr.length <= 1 || arr.every((item, index) => {
    // 第一个元素无需比对
    if (index === 0) return true
    return Number(item) <= Number(arr[index - 1])
  })
}

注意事项

  • 如果你的数组元素确定为纯Number类型,可以去掉Number()转换逻辑,减少冗余操作
  • 若数组可能包含非数字内容,Number()转换后会得到NaN,比对结果永远为false,需要额外添加NaN判断逻辑适配这类场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:15:02