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

JavaScript中实现指定规则的二维数组简单排序方法?

二维数组按指定规则排序的解决方案

你的代码问题出在将数组元素转为字符串后排序——字符串排序是按字符的Unicode顺序而非数值大小,比如"19.10"会因为首字符'1'的编码小于'5',错误地排在"5.59"前面,导致结果不符合要求。

直接使用数组的sort()方法并传入自定义比较函数就能解决问题,代码如下:

let arr = [[0,23],[19,30],[6,47],[5,59],[1,56],[1,20],[19,10]];
let result = arr.sort((a, b) => {
    // 优先按子数组第一个元素升序
    if (a[0] !== b[0]) {
        return a[0] - b[0];
    }
    // 第一个元素相同时,按第二个元素升序
    return a[1] - b[1];
});
console.log(result);

代码说明

  • sort()方法的比较函数中,返回值为负数时,a会排在b前面;返回正数时,b排在a前面;返回0则保持原有顺序。
  • 先对比子数组的第一个元素,通过数值差确定排序方向;当第一个元素相等时,再对比第二个元素的数值差,实现你需要的排序规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:42:32