сортировать массив Javascript, когда элементы не имеют заголовка - PullRequest
0 голосов
/ 31 декабря 2018

[["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 для любой длины из массива?

Ответы [ 4 ]

0 голосов
/ 31 декабря 2018

Вот самый простой способ 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);
0 голосов
/ 31 декабря 2018

Если вы хотите отсортировать по дате, вы можете использовать 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])

0 голосов
/ 31 декабря 2018

Использование 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);
0 голосов
/ 31 декабря 2018

Поскольку вы используете вложенный массив, вам необходимо получить доступ к первому элементу каждого массива в списке.

Например, здесь я использую 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")
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...