[["12/10/18", "00:30"],["12/17/18", "00:30"],["12/06/18", "00:30"],["12/11/18", "00:30"],["12/26/18", "00:45"],["12/22/18", "00:30"],
["12/25/18", "00:00"],["12/23/18", "00:30"],["12/28/18", "00:30"]]
我在元素的前面有一个长度可变的数组,没有标题。我如何用Javascript在Date之后对这个数组进行排序,以获取数组的任意长度?
答案 0 :(得分:1)
由于使用的是嵌套数组,因此需要访问列表中每个数组的第一个元素。
例如,在这里,我使用Moment.js对dates
中的数组进行排序:
const moment = require('moment')
const dates = [["12/10/18", "00:30"],["12/17/18", "00:30"],["12/06/18", "00:30"],["12/11/18", "00:30"],["12/26/18", "00:45"],["12/22/18", "00:30"],["12/25/18", "00:00"],["12/23/18", "00:30"],["12/28/18", "00:30"]]
const sorted = dates.sort((a,b) =>
moment(a[0], "MM/DD/YY") - moment(b[0], "MM/DD/YY")
)
答案 1 :(得分:1)
使用Date.UTC。这也随时间排序,但是如果不需要,可以将其删除。
const data = [["12/10/18", "00:30"],["12/17/18", "00:30"],["12/06/18", "00:30"],["12/11/18", "00:30"],["12/26/18", "00:45"],["12/22/18", "00:30"],["12/25/18", "00:00"],["12/23/18", "00:30"],["12/28/18", "00:30"]];
function toDate(a){
const da1 = a[0].split("/").reverse();
const ta1 = a[1].split(":");
return Date.UTC(da1[0], da1[2]-1, da1[1], ...ta1);
}
const res = data.sort((a,b)=>{
const d1 = toDate(a);
const d2 = toDate(b);
return d1 - d2;
});
console.log(res);
答案 2 :(得分:0)
这是最简单的javascript方法(不需要库):
let array = [["12/10/18", "00:30"],["12/17/18", "00:30"],["12/06/18", "00:30"],["12/11/18", "00:30"],["12/26/18", "00:45"],["12/22/18", "00:30"],
["12/25/18", "00:00"],["12/23/18", "00:30"],["12/28/18", "00:30"]];
let sortedArray = array.sort(function compare(a, b) {
let dateA = new Date(a[0]);
let dateB = new Date(b[0]);
return dateA - dateB;
});
console.log('sorted array is : ',sortedArray);
答案 3 :(得分:-3)
如果要按日期排序,可以使用localeCompare来实现:
const temp = [["12/10/18", "00:30"],["12/17/18", "00:30"],["12/06/18", "00:30"],["12/11/18", "00:30"],["12/26/18", "00:45"],["12/22/18", "00:30"],
["12/25/18", "00:00"],["12/23/18", "00:30"],["12/28/18", "00:30"]]
let sorted = temp.sort(function(a, b) {
return a[0].localeCompare(b[0])
})
如果要按相反方向对数组进行排序,请使用相反的方法或b[0].localeCompare(a[0])