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

有没有更优的方法对二维数组按照两个不同条件执行二次排序?

优化方案

你可以仅通过一次sort调用实现需求,无需连续排序两次,既减少冗余逻辑也能提升一倍排序性能。

实现代码(和你原有逻辑保持一致,为原地排序,会修改传入的原数组)

function sortArr(array) {
  return array.sort((a, b) => {
    // 优先按子数组第二位降序排序
    if (b[1] !== a[1]) {
      return b[1] - a[1];
    }
    // 第二位相等时按子数组第一位升序排序
    return a[0] - b[0];
  });
}

不修改原数组的版本

如果需要避免修改传入的原数组,可以先对数组做浅拷贝再排序:

function sortArr(array) {
  return [...array].sort((a, b) => {
    if (b[1] !== a[1]) {
      return b[1] - a[1];
    }
    return a[0] - b[0];
  });
}

验证效果

调用sortArr([[3,2],[1,2],[2,1]])会直接返回你期望的结果[[1,2],[3,2],[2,1]]。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:24:03