JavaScript:基于子数组元素的排序数组包含字符串日期

时间:2018-12-16 07:13:12

标签: javascript arrays sorting

我有一个数组complexArray,我想按其子数组(字符串)的第一个值进行排序。在simpleArray中按需要进行排序。对于使用中的复杂数组,使用自定义排序功能可与Int值配合使用(例如,在[1]位置),但不适用于在[0]位置的String。

我需要如何调整自定义排序功能才能使其正常工作?

var simpleArray = ["2018-12-06T19:48:39Z","2018-12-15T19:48:39Z","2018-12-13T16:37:04Z"];
simpleArray.sort();
console.log(simpleArray);

var complexArray = [["2018-12-06T19:48:39Z", 1, "15m 10s"],["2018-12-15T19:48:39Z", 3, "16m 25s"],["2018-12-13T16:37:04Z", 2,"21m 41s"]];   
complexArray.sort(function(a, b){
    return a[0] - b[0];
});
console.log(complexArray);

1 个答案:

答案 0 :(得分:2)

您需要将日期字符串转换为Date对象,然后在排序函数中进行比较。

var complexArray = [["2018-12-06T19:48:39Z", 1, "15m 10s"],["2018-12-15T19:48:39Z", 3, "16m 25s"],["2018-12-13T16:37:04Z", 2,"21m 41s"]]
  
complexArray.sort(function(a, b){
    return new Date(a[0]) - new Date(b[0]);
});

console.log(complexArray);