我有一个多维数组,其中有值日期,我想按以下值将其排序为数组结构:
[
['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']
]
答案 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.sort
和Array.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);