按日期数组中的日期字符串对数组进行排序

时间:2018-09-01 06:43:40

标签: javascript jquery arrays

我有一个多维数组,其中有值日期,我想按以下值将其排序为数组结构:

[
    ['01-Sep-2018', 'Some other Value'],
    ['20-Aug-2018', 'Some other Value'],
    ['21-Aug-2018', 'Some other Value'],
    ['22-Aug-2018', 'Some other Value'],
    ['23-Aug-2018', 'Some other Value']
]

我需要这样的输出

[
    ['20-Aug-2018', 'Some other Value'],
    ['21-Aug-2018', 'Some other Value'],
    ['22-Aug-2018', 'Some other Value'],
    ['23-Aug-2018', 'Some other Value'],
    ['01-Sep-2018', 'Some other Value']
]

3 个答案:

答案 0 :(得分:0)

以下是您期望的工作代码。

compare_dates = function(date1,date2){

      d1= new Date(date1[0]);
      d2= new Date(date2[0]);
      if (d1>d2) return 1;
       else if (d1<d2)  return -1;
       else return 0;
    }
    var objs = [
        ['01-Sep-2018', 'Some other Value'],
        ['20-Aug-2018', 'Some other Value'],
        ['21-Aug-2018', 'Some other Value'],
        ['22-Aug-2018', 'Some other Value'],
        ['23-Aug-2018', 'Some other Value']
    ];

    objs.sort(compare_dates);

    console.log(objs);

答案 1 :(得分:0)

您可以使用Array.sort,唯一的麻烦就是将日期转换成JS可以解析的内容。可以通过用空格替换日期中的-并将其转换为类似'20 Sep 2018'的形式来作为Date构造函数的输入来完成。

let array = [
    ['01-Sep-2018', 'Some other Value'],
    ['20-Aug-2018', 'Some other Value'],
    ['21-Aug-2018', 'Some other Value'],
    ['22-Aug-2018', 'Some other Value'],
    ['23-Aug-2018', 'Some other Value']
];
array.sort((a, b) => new Date(a[0].replace(/-/g, ' ')) - new Date(b[0].replace(/-/g, ' ')));
console.log(array);

答案 2 :(得分:0)

您可以使用Array.prototype.sortArray.prototype.map来提取日期值:

const data = [['01-Sep-2018', 'Some other Value'],['20-Aug-2018', 'Some other Value'],['21-Aug-2018', 'Some other Value'],['22-Aug-2018', 'Some other Value'],['23-Aug-2018', 'Some other Value']];

const sorted = data.sort((a,b) => {
    
    const [aD, bD] = [a,b].map(([d]) => new Date(d.replace(/-/gi,' ')))

    return aD - bD;

});

console.log(sorted);