在Java/Javascript中按Unix日期对未定义长度(行)的2D数组进行排序

在Java/Javascript中按Unix日期对未定义长度(行)的2D数组进行排序,javascript,sorting,Javascript,Sorting,我必须对未定义长度(行)的2D数组进行排序,才能按日期排序。阵列必须具有以下版本: var Data = new Array(); var ArrayCount = 0; for(var i = 0; i < CSVDataRow.length; ++i) { CreditCardData[ArrayCount] = new Array(); Data[ArrayCount][0] = new Date(YYYY,MM,DD); // Date Data[Ar

我必须对未定义长度(行)的2D数组进行排序,才能按日期排序。阵列必须具有以下版本:

var Data = new Array();
var ArrayCount = 0;

for(var i = 0; i < CSVDataRow.length; ++i) {

    CreditCardData[ArrayCount] = new Array();

    Data[ArrayCount][0] = new Date(YYYY,MM,DD); // Date
    Data[ArrayCount][1] = amount; // Example for Money
    Data[ArrayCount][2] = purpose1; // Example for Text
    Data[ArrayCount][3] = purpose2; // Example for Text
    Data[ArrayCount][4] = purpose3; // Example for Text

    ArrayCount = ArrayCount +1; // Count for the next Array
}
现在,我必须按Unix日期(好的,这可能是像YYYYMMDD这样的正常日期)降序排列这个多数组(具有未定义的长度/行)

Data[0][0] = Tue Jul 30 2013 00:00:00 GMT+0200 (MESZ)
Data[0][1] = 200.00
Data[0][2] = Example Text 02
Data[0][3] = Example Text 03
Data[0][4] = Example Text 04

Data[1][0] = Tue Jul 15 2013 00:00:00 GMT+0200 (MESZ)
Data[1][1] = 333.00
Data[1][2] = Example Text 22
Data[1][3] = Example Text 23
Data[1][4] = Example Text 24

Data[2][0] = Tue Jul 09 2013 00:00:00 GMT+0200 (MESZ)
Data[2][1] = 500.00
Data[2][2] = Example Text 12
Data[2][3] = Example Text 13
Data[2][4] = Example Text 14

Data[3][0] = Mon Jul 02 2013 00:00:00 GMT+0200 (MESZ)
Data[3][1] = 777.00
Data[3][2] = Example Text 32
Data[3][3] = Example Text 33
Data[3][4] = Example Text 34

......
......
......
......
......
互联网上什么都帮不了我,我该怎么办


非常感谢

创建一个函数来比较两个数组元素,如“”的答案,然后将数组传递给内置的数组原型。

您需要执行类似操作

Javascript

var data = [],
    sortThis,
    i;

for (i = 0; i < 10; i += 1) {
    data[i] = [];
    data[i][0] = new Date(2013, 08, 30 - i).getTime() / 1000; // Unix-Date
    data[i][1] = i * 100; // Example for Money
    data[i][2] = "text1 " + i; // Example for Text
    data[i][3] = "text2 " + i; // Example for Text
    data[i][4] = "text3 " + i; // Example for Text
}

sortThis = data.slice();
sortThis.sort(function (a, b) {
    if (a[0] === b[0]) {
        return 0;
    }

    if (a[0] < b[0]) {
        return -1;
    }

    return 1;
});

console.log(data, sortThis);
var数据=[],
等等,
我
对于(i=0;i<10;i+=1){
数据[i]=[];
data[i][0]=新日期(2013年8月30日-i).getTime()/1000;//Unix日期
数据[i][1]=i*100;//货币示例
数据[i][2]=“text1”+i;//文本示例
数据[i][3]=“text2”+i;//文本示例
数据[i][4]=“text3”+i;//文本示例
}
sorttthis=data.slice();
排序此排序(函数(a,b){
如果(a[0]==b[0]){
返回0;
}
if(a[0]

这对我没有帮助吗?我必须用未定义的长度(行)对2D数组进行排序,并且必须像我的question@derRichter如果你密切注意它的作用,它确实会有帮助。@deceze这是一个很长的答案,为什么要切片?为什么要从我的阵列中创建新的构建?哦这是一个很好的答案看看这个答案。您只需将a[1]替换为a[0],将b[1]替换为b[0]。@der Wut<代码>切片
制作一份副本以供演示。“一份长答案”?OP没有指定答案的长度。这对我没有帮助吗?我必须对未定义长度(行)的2D数组进行排序
var data = [],
    sortThis,
    i;

for (i = 0; i < 10; i += 1) {
    data[i] = [];
    data[i][0] = new Date(2013, 08, 30 - i).getTime() / 1000; // Unix-Date
    data[i][1] = i * 100; // Example for Money
    data[i][2] = "text1 " + i; // Example for Text
    data[i][3] = "text2 " + i; // Example for Text
    data[i][4] = "text3 " + i; // Example for Text
}

sortThis = data.slice();
sortThis.sort(function (a, b) {
    if (a[0] === b[0]) {
        return 0;
    }

    if (a[0] < b[0]) {
        return -1;
    }

    return 1;
});

console.log(data, sortThis);