当元素没有标题时对Javascript数组进行排序

时间:2018-12-31 12:49:36

标签: javascript arrays sorting date

[["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之后对这个数组进行排序,以获取数组的任意长度?

4 个答案:

答案 0 :(得分:1)

由于使用的是嵌套数组,因此需要访问列表中每个数组的第一个元素。

例如,在这里,我使用Moment.jsdates中的数组进行排序:

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])