Написать сортировку по дате и имени в JavaScript? - PullRequest
0 голосов
/ 02 мая 2019

Как написать сортировку по дате и имени в ?У меня есть один стол.Есть 2 столбца: name и created date:

name:  ["A", "A9", "A10", "A11", "A3"]
createdDate: ["Apr 2, 2019 3:07 PM", "Apr 10, 2019 9:25 AM", "Apr 30, 2019 6:08 PM", "Apr 10, 2019 8:25 AM", "Apr 2, 2019 8:07 PM"]

Я уже пробовал использовать метод сортировки.Вывод должен выглядеть так:

name: ["A", "A3", "A9", "A10", "A11"]
createdDate: ["Apr 2, 2019 3:07 PM", "Apr 2, 2019 8:07 PM","Apr 10, 2019 8:25 AM", "Apr 10, 2019 9:25 AM", "Apr 30, 2019 6:08 PM"]

Ответы [ 3 ]

0 голосов
/ 02 мая 2019

Это способ сортировки массива name в алфавитном порядке с использованием localeCompare () и передачи числового значения в качестве одного из параметров.

const name =  ["A", "A9", "A10", "A11", "A3"];
name.sort((a, b) => a.localeCompare(b, 'en', { numeric: true }));
console.log(name);

Вот как вы можете отсортировать их по датам.По сути, мы преобразуем их в объекты дат даты JavaScript при выполнении сравнения.

const createdDate = ["Apr 2, 2019 3:07 PM", "Apr 2, 2019 8:07 PM","Apr 10, 2019 8:25 AM", "Apr 10, 2019 9:25 AM", "Apr 30, 2019 6:08 PM"];
createdDate.sort((a, b) => new Date(a) - new Date(b));
console.log(createdDate);
0 голосов
/ 02 мая 2019

, чтобы сделать это правильно, я бы объединил ответы sudip и wentjun

строк:

name.sort((a, b) => a.localeCompare(b, 'en', { numeric: true }));

даты:

createdDate.sort((a, b) => Date.parse(a) - Date.parse(b));
0 голосов
/ 02 мая 2019

Для сортировки строк:

array.sort(function(a, b) {
    var titleA = a.title.toLowerCase(), titleB = b.title.toLowerCase();
    if (titleA < titleB) return -1;
    if (titleA > titleB) return 1;
    return 0;
});

Сортировать даты:

array.sort(function(a, b) {
    var dateA = new Date(a.release), dateB = new Date(b.release);
    return dateA - dateB;
});

Подробнее см. В этом документе https://en.proft.me/2015/11/14/sorting-array-objects-number-string-date-javascrip/.

...