Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在多维数组中对多列数据进行排序?_Javascript_Arrays_Columnsorting - Fatal编程技术网

Javascript 如何在多维数组中对多列数据进行排序?

Javascript 如何在多维数组中对多列数据进行排序?,javascript,arrays,columnsorting,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.

我正在使用
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]
]
我要求的结果是:

[
    ["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]
]
由于数组是三维的,我想在
列1
2
上排序,所以首先在
1
列上应用升序,然后在
2列上应用升序/降序


提前感谢。

实际上,您的阵列是二维的。您可以按照与一维数组相同的方式对其进行排序:

const数据=[
[ "2015-08-09", 1.2, 1.2], 
[ "2015-08-10", 1.2, 1.21], 
[ "2015-08-11", 1.2, 0.99],
[ "2015-10-29",  1.2, 1.12] , 
[ "2015-09-10",  1.21, 1.19]   
]
函数排序(a,b){
const col1=新日期(a[0])-新日期(b[0]);
if(col1==0){
返回a[1]-b[1];
}
返回col1;
}

console.log(data.sort(sort))
实际上,您的数组是二维的。您可以按照与一维数组相同的方式对其进行排序:

const数据=[
[ "2015-08-09", 1.2, 1.2], 
[ "2015-08-10", 1.2, 1.21], 
[ "2015-08-11", 1.2, 0.99],
[ "2015-10-29",  1.2, 1.12] , 
[ "2015-09-10",  1.21, 1.19]   
]
函数排序(a,b){
const col1=新日期(a[0])-新日期(b[0]);
if(col1==0){
返回a[1]-b[1];
}
返回col1;
}

console.log(data.sort(sort))
只需通过获取每列的增量来链接想要的顺序

var数组=[[“2015-08-09”,1.2,1.2],“2015-08-10”,1.2,1.21],“2015-08-11”,1.2,0.99],“2015-10-29”,1.2,1.12],“2015-09-10”,1.21,1.19];
sort((a,b)=>a[1]-b[1]| | a[2]-b[2]);

log(array.map(a=>a.join(“”))只需通过获取每列的增量来链接想要的订单

var数组=[[“2015-08-09”,1.2,1.2],“2015-08-10”,1.2,1.21],“2015-08-11”,1.2,0.99],“2015-10-29”,1.2,1.12],“2015-09-10”,1.21,1.19];
sort((a,b)=>a[1]-b[1]| | a[2]-b[2]);

log(array.map(a=>a.join(“”))这里有另一种方法,在排序比较函数上使用更类似的数学表达式,并按照您的预期格式化输出:

const输入=[
["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]
];
//首先,我们使用map()克隆数组,这样就不会更改
//原始数据,也可以按照您的期望格式化数字。
设res=input.map(
([a,b,c,d])=>[a,b.toFixed(2),c.toFixed(2),d.toFixed(2)]
);
//现在,我们使用更类似于数学表达式的方法对新数组进行排序。
res.sort((x,y)=>
{
设n=x[1]-y[1],m=x[2]-y[2];
返回n+m*(n==0);
});

控制台日志(res)这里有另一种方法,在排序比较函数上使用更类似的数学表达式,并按照您的预期格式化输出:

const输入=[
["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]
];
//首先,我们使用map()克隆数组,这样就不会更改
//原始数据,也可以按照您的期望格式化数字。
设res=input.map(
([a,b,c,d])=>[a,b.toFixed(2),c.toFixed(2),d.toFixed(2)]
);
//现在,我们使用更类似于数学表达式的方法对新数组进行排序。
res.sort((x,y)=>
{
设n=x[1]-y[1],m=x[2]-y[2];
返回n+m*(n==0);
});

控制台日志(res)我也面临同样的问题,并找到了一个在多维数组中对多列数据进行排序的好解决方案

检查下面的代码

(函数(){
函数deepsort(){
变量i,order=参数,L=order.length,tem;
返回a.sort(函数(a,b){
i=0;
而(ibo?1:-1;
}
如果(res[1]=“DESC”){
返回ao})();我也面临同样的问题,并找到了一个在多维数组中对多列数据进行排序的好解决方案

检查下面的代码

(函数(){
函数deepsort(){
变量i,order=参数,L=order.length,tem;
返回a.sort(函数(a,b){
i=0;
而(ibo?1:-1;
}
如果(res[1]=“DESC”){
返回ao})();不是二维的吗?只是说‘不,它不仅仅是二维数组,它的动态数组?关于数组是动态的……如果你不给我们更多关于动态意味着什么的信息,也许还有一个例子,我们就帮不了你。在你更新了原始问题之后