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

如何实现点击同一按钮可切换数组升序/降序排序的功能

问题根源

你当前的写法是在第一次点击的回调函数内又绑定了一次click事件,第二次点击后会出现多层事件绑定冲突,因此只能正常生效前两次。

修复方案

在click事件外部定义一个状态变量记录当前排序方向,每次点击翻转状态,根据状态执行对应排序逻辑即可实现无限切换,修改后的代码如下:

// 外部定义状态变量,记录当前是否为降序排序
let isDescSort = false;

$(".lower").click(() => {
  // 每次点击翻转排序状态
  isDescSort = !isDescSort;
  if (isDescSort) {
    // 降序逻辑:数值从大到小
    colorsValueMenu("highest", "spot", "gainers", "losers", "lower")
    arrayCoinsD.sort(function (a, b) { 
      return b.quote.USD.percent_change_24h - a.quote.USD.percent_change_24h 
    })
  } else {
    // 升序逻辑:数值从小到大
    colorsValueMenu("lower", "spot", "gainers", "losers", "highest")
    arrayCoinsD.sort(function (a, b) { 
      return a.quote.USD.percent_change_24h - b.quote.USD.percent_change_24h 
    })
  }
  createCoinDiv(arrayCoinsD, arrayCoinsI)
})

补充说明:Array.sort() 会直接修改原数组,你之前代码中把排序结果赋值给highest/lower变量的操作是非必需的,如果没有额外保留两份排序后副本的需求可以直接省略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:57:04