javascript - 如何对多维数组中的多列数据进行排序?

标签 javascript arrays columnsorting

我正在使用 JavaScript 代码,其中有一个如下所示的数组:

数组:

[
    ["2015-08-09", 1.2, 1.20, 2.1],
    ["2015-08-10", 1.2, 1.21, 2.11],
    ["2015-08-11", 1.2, 0.99, 2.20],
    ["2015-10-29", 1.2, 1.12, 2.22],
    ["2015-09-10", 1.21, 1.19, 2.00]
]

我需要的结果是:

[
    ["2015-08-09", 1.20, 1.20, 2.10],
    ["2015-08-10", 1.20, 1.21, 2.11],
    ["2015-08-11", 1.20, 0.99, 2.20],
    ["2015-10-29", 1.20, 1.12, 2.22],
    ["2015-09-10", 1.21, 1.19, 2.00]
]

由于数组是 3 维的,我想对 column 12 进行排序,因此首先对 1 列应用升序,然后对 column 应用升序2(升序/降序)。

最佳答案

我也遇到了同样的问题,并找到了一个很好的解决方案,可以对多维数组中的多列数据进行排序。

检查下面的代码

(function() {
      function deepsort(){
    var i, order= arguments, L= order.length, tem;
    return a.sort(function(a, b){
        i= 0;
      
        while(i < L){
          
            tem= order[i++];
          var res = tem.split("_");
            var ao= a[res[0]] || 0, bo= b[res[0]] || 0;
            if(ao== bo) continue;
           
          if(res[1] == "ASC"){
            return ao > bo? 1: -1;
          }
          if(res[1] == "DESC"){
             return ao < bo? 1: -1;
          }
        }
        return 0;
    });
}

var a= [
    ["2015-08-09", 1.2, 1.20, 2.1],
    ["2015-08-10", 1.2, 1.21, 2.11],
    ["2015-08-11", 1.2, 0.99, 2.20],
    ["2015-10-29", 1.2, 1.12, 2.22],
    ["2015-09-10", 1.21, 1.19, 2.00]
];
document.write(deepsort(1+"_ASC",2+"_ASC"));
// for better result view check console log
console.log(deepsort(1+"_ASC",2+"_ASC"))
//console.log(a.deepsort(1))
    
    })();

关于javascript - 如何对多维数组中的多列数据进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54347691/

相关文章:

javascript - 删除 Dexterity 内容类型上的字段集选项卡界面

javascript - 通过 JSON 读取 URL

Java:XML dom 解析仅检索数组的 1 个元素

python - 将 MultiIndex DataFrame 格式从列排序到 Pandas 中的变量

javascript - [allchars] 的正则表达式

javascript - 如何在 iOS/Android 上的浏览​​器中检测从 sleep 中唤醒?

c++ - 为什么在 C++ 中声明一个全局数组时,它可以给出的大小比在 main 中声明的要大

arrays - 如何在数组Golang中查找非重复项

python-2.7 - 在 python pandas 中编写 csv,需要更改列的顺序并添加空白列

excel - 如何按与A列匹配的值对excel中的两列进行排序?