Сортировка массива объектов Javascript по дате не работает должным образом - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть массив объектов javascript с 5 элементами в нем.У каждого есть поле, которое является полем даты.Формат даты выглядит следующим образом: Mon Dec 17 2018 19:28:29 GMT-0500 (Eastern Standard Time) {}

Когда я пытаюсь это сделать: myArray.sort(function(a, b) { return b.CreateTime - a.CreateTime ;})

Массив не отсортирован, т. Е. Объект с самым ранним значением поля CreateTime не находится ни вверх или низ, он посередине.

Я пробовал также это:

myArray.sort(function(a, b) { return (new Date(b.CreateTime.getTime())) - (new Date(a.CreateTime.getTime())) ;})

Не работает.

Также пробовалэто:

myArray.sort(function(a, b) { return (new Date(b.CreateTime)) - (new Date(a.CreateTime)) ;})

Все еще не ходят.

Поиски в Интернете говорят, что это способ сортировки массива объектов JS по дате.

Итак, что мне не хватает?

Вот пример объекта:

{
 "Identifier": "prd17865EXC",
 "Type": "large",
 "Status": "available",
 "UN": "u367892",
 "DBN": "sprtdb",
 "EP": {
         "Prod": "excersizeMachine1",
         "Number": 57477367
       },
 "CreateTime": "2018-12-18T00:28:29.803Z"
}

Ответы [ 2 ]

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

let myArray = [{
  CreateTime :"2018-12-18T00:28:29.803Z"
  },
  {
  CreateTime :"2018-12-16T00:28:29.803Z"
  }
];

myArray.sort( (a,b) => {
  dateA = new Date(a.CreateTime);
  dateB = new Date(b.CreateTime);
  
  return dateA - dateB;
});

console.log(myArray);
0 голосов
/ 18 декабря 2018

Я полагаю, у вас есть опечатка во втором подходе.Вы хотите позвонить getTime() в только что созданную дату, а не в начальную дату.

Это должно быть:

myArray.sort(function(a, b) {
  return new Date(b.CreateTime).getTime() - new Date(a.CreateTime).getTime();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...