我正在使用 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 1
和 2
进行排序,因此首先对 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/