Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как правильно отсортировать свойства данные по дате и времени? (https://javascript.ru/forum/dom-window/81703-kak-pravilno-otsortirovat-svojjstva-dannye-po-date-i-vremeni.html)

dc65k 15.01.2021 09:28

Как правильно отсортировать свойства данные по дате и времени?
 
Всем привет, подскажите, пожалуйста как правильно отсортировать следующие данные по дате и времени?
Чтобы затем с помощью, например объекта Date, получить необходимые данные.
const dates = [
    {date: "14.01.2021T22:09:12", title: 1},
    {date: "14.01.2021T22:08:17", title: 2},
    {date: "14.01.2021T21:58:03", title: 4},
    {date: "14.01.2021T21:54:38", title: 5},
    {date: "14.01.2021T22:04:12", title: 3},
    {date: "14.01.2021T21:51:24", title: 6},
    {date: "14.01.2021T21:48:35", title: 7},
    {date: "14.01.2021T21:33:49", title: 8},
    {date: "14.01.2021T21:07:42", title: 10},
    {date: "14.01.2021T21:05:22", title: 11},
    {date: "14.01.2021T21:09:09", title: 9},
    {date: "14.01.2021T21:03:57", title: 12},
    {date: "14.01.2021T21:02:14", title: 13},
    {date: "14.01.2021T20:21:21", title: 14},
    {date: "14.01.2021T19:59:39", title: 15},
    {date: "14.01.2021T19:47:47", title: 17},
    {date: "14.01.2021T19:40:28", title: 18},
    {date: "14.01.2021T19:49:24", title: 16},
    {date: "14.01.2021T19:29:51", title: 19},
    {date: "14.01.2021T19:28:40", title: 20},
    {date: "14.01.2021T14:08:19", title: 21},
    {date: "14.01.2021T13:59:29", title: 22},
    {date: "14.01.2021T13:56:22", title: 24},
    {date: "14.01.2021T13:56:14", title: 25},
    {date: "14.01.2021T13:55:50", title: 26},
    {date: "14.01.2021T13:55:42", title: 27},
    {date: "14.01.2021T13:55:29", title: 28},
    {date: "15.01.2021T07:07:19", title: 0},
    {date: "14.01.2021T13:56:57", title: 23},
    {date: "14.01.2021T11:33:55", title: 29},
    {date: "14.01.2021T11:14:28", title: 30},
    {date: "13.01.2021T18:59:53", title: 31},
    {date: "13.01.2021T17:18:11", title: 32},
    {date: "13.01.2021T17:11:35", title: 33},
    {date: "13.01.2021T13:46:57", title: 40},
    {date: "13.01.2021T13:35:57", title: 41},
    {date: "13.01.2021T13:05:20", title: 42},
    {date: "13.01.2021T13:02:12", title: 43},
    {date: "13.01.2021T12:56:21", title: 44},
    {date: "13.01.2021T17:00:17", title: 34},
    {date: "13.01.2021T16:59:36", title: 35},
    {date: "13.01.2021T16:56:56", title: 36},
    {date: "13.01.2021T16:49:00", title: 37},
    {date: "13.01.2021T15:06:49", title: 38},
    {date: "13.01.2021T14:03:52", title: 39},
    {date: "13.01.2021T12:55:43", title: 45},
    {date: "13.01.2021T12:30:40", title: 46},
    {date: "13.01.2021T11:50:36", title: 47},
    {date: "12.01.2021T15:06:30", title: 48},
    {date: "12.01.2021T13:36:05", title: 49},
    {date: "12.01.2021T13:13:29", title: 50},
    {date: "12.01.2021T13:11:55", title: 51},
    {date: "12.01.2021T13:03:05", title: 52},
    {date: "12.01.2021T12:58:25", title: 53},
    {date: "12.01.2021T12:56:30", title: 54},
    {date: "12.01.2021T12:43:40", title: 55},
    {date: "12.01.2021T11:03:03", title: 56},
    {date: "12.01.2021T11:01:49", title: 57},
    {date: "12.01.2021T11:01:13", title: 58},
    {date: "12.01.2021T11:00:50", title: 59},
]

рони 15.01.2021 10:25

dc65k,
а можно дату в другом формате?

dc65k 15.01.2021 10:36

На самом деле вопрос у меня в том, как лучше именно с таким форматом сделать сортировку. Я понимаю, что можно сделать, используя регулярное выражение, затем new Date и далее .sort().

рони 15.01.2021 11:02

dc65k,
вы сами ответили на свой вопрос. :)

flisterseven 09.02.2021 12:48

Дайте следующий массив объектов, мне нужно отсортировать их по полю даты по возрастанию.

var myArray = [
{
имя: "Джо Блоу",
дата: "31 октября 2016 г., 00:00:00 GMT-0700 (PDT)"
},
{
имя: "Сэм Снид",
дата: "30 октября 2016 г., 00:00:00 GMT-0700 (PDT)"
},
{
имя: "Джон Смит",
дата: «Сб, 29 октября 2016, 00:00:00 GMT-0700 (PDT)»
}
];
так что в этом примере конечным результатом будут Джон Смит, Сэм Снид и Джо Блоу.

Я пытаюсь использовать lodash _.sortBy (), но не могу выполнить сортировку, как бы я ни пытался ее использовать:

_.sortBy (myArray, function (dateObj) {
дата возвратаObj.date;
});
или

_.sortBy (myArray, 'дата');
Что мне нужно изменить, чтобы мой массив был правильно отсортирован? У меня также есть Moment.js, поэтому я могу использовать его для форматирования строки даты, если это необходимо. Я попытался преобразовать свойство даты с помощью .unix (), но это не имело значения.

Благодарю. psiphone for pc jiofi.local.html

рони 09.02.2021 13:36

flisterseven,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони 09.02.2021 13:45

sortBy lodash and moment
 
flisterseven,

<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/locale/ru.js"></script>
</head>
<body>
<script>
let myArray = [{
        имя: "Сэм Снид",
        дата: "30 октября 2016 г., 00:00:00 GMT-0700 (PDT)"
    },
    {
        имя: "Джон Смит",
        дата: "29 октября 2016 г., 00:00:00 GMT-0700 (PDT)"
    },
    {
        имя: "Джо Блоу",
        дата: "31 октября 2016 г., 00:00:00 GMT-0700 (PDT)"
    },
    {
        имя: "Алекс Томпсон",
        дата: "29 октября 2016 г., 00:00:00 GMT-0700 (PDT)"
    }
];
moment.locale('ru');
myArray = _.sortBy(myArray, [({ дата }) => moment( дата, 'LLL').valueOf(), 'имя']);
document.write(`<pre>${JSON.stringify(myArray, "", 4)}</pre>`)
</script>
</body>
</html>


Часовой пояс GMT +3, время: 10:28.