Как упорядочить объекты массива по дате? - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть массив таких объектов

layerArr = [
            {
               name: "layer 1"
               layerDate: "/Date(6958748400000)/"
               layerDateFormatted: "31 December 2018"
               etc...
            }
            {
               name: "layer 2"
               layerDate: "/Date(9375937500000)/"
               layerDateFormatted: "23 December 2017"
               etc...
            }
            {
               name: "layer 3"
               layerDate: "/Date(1554764400000)/"
               layerDateFormatted: "15 January 2018"
               etc...
            }]

Как я могу отсортировать layerArr по дате с самой последней датой первой?В этом примере, когда слой 2 отсортирован правильно, я также хочу, чтобы самая поздняя дата стала слоем 1, а самая старая дата должна стать последним слоем.(приведенный выше пример состоит из значений)

Спасибо

РЕДАКТИРОВАТЬ: ссылки, предлагаемые на другие темы, не объясняют, как изменить «имя», чтобы самая последняя дата стала name ="layer 1" для всехпуть к самой старой дате становится последним слоем.

1 Ответ

4 голосов
/ 26 апреля 2019

Использование Array.sort():

layerArr = [
  { name: "layer 1", layerDate: "/Date(6958748400000)/", layerDateFormatted: "31 December 2018" },
  { name: "layer 2", layerDate: "/Date(9375937500000)/", layerDateFormatted: "23 December 2017" },
  { name: "layer 3", layerDate: "/Date(1554764400000)/", layerDateFormatted: "15 January 2018" }
];
            
sortedLayerArr = layerArr.sort(function(a, b) {
  return new Date(a.layerDateFormatted)- new Date(b.layerDateFormatted);
}).map((layer, index) => ({
  ...layer,
  name: `layer ${index + 1}`,
}));

console.log(layerArr);
console.log(sortedLayerArr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...