Есть ли способ сортировать время, отформатированное в строки AM/PM?

Я хочу отсортировать массив объектов по времени получения, но мне нужно, чтобы время было отформатировано, как в массиве ниже после сортировки. Очевидно, проблема, с которой я сталкиваюсь, заключается в том, что вы не можете использовать .sort() для сортировки строк, как вы можете использовать целые числа.

Есть ли способ отсортировать их с самого раннего времени до самого последнего, используя .sort()? Или, если нет, есть ли способ отформатировать их как целые числа, а затем переформатировать и вернуть их на соответствующие места в объекте?

[{pickupTime='10:30 AM', pickupTime='4:00 AM', pickupTime='6:30 AM',pickupTime='12:00 PM',pickupTime='1:00 PM'}, [{pickupTime='9:00 AM',pickupTime='6:00 PM', pickupTime='4:00 PM', pickupTime='8:00PM'}, {pickupTime='4:00 PM', pickupTime='7:00PM', pickupTime='5:30 PM'}] 

Это то, что я использую для их форматирования в сценариях приложений.

 for(var k = 0 ; k < abc.length ; k++){
  let singleDelivery = sourceRange[abc[k]];
  let pickTime = new Date(singleDelivery[8])
  let pickTime2 = Utilities.formatDate(pickTime, "EST", 'h:mm a');
  let dropTime = new Date(singleDelivery[10]);
  let dropTime2 = Utilities.formatDate(dropTime, "EST", 'h:mm a');

  let deliveryDetailsArray = {
    "orderName": singleDelivery[1],
    "driverName": singleDelivery[2],
    "deliveryDate" : singleDelivery[7],
    "pickupTime": pickTime2,
    "dropoffTime": dropTime2,
    "pickUpAddress": singleDelivery[11],
    "dropoffAddress": singleDelivery[12],
    "routingType": singleDelivery[13]
  }      

      deliveryDetails.push(deliveryDetailsArray);

    
     sorted = deliveryDetails.sort((a, b) => a.pickupTime - b.pickupTime)


} 
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пока не форматируйте дату при объявлении devlieryDetailsArray, сохраните ее как pickTime необработанный объект даты (из вашего кода я точно не знаю, что это обычная дата JS, но я так предполагаю).

Сортируйте, а потом отформатируйте.

const sorted = deliveryDetails.sort((a,b) => a.pickupTime - b.pickupTime);
const formattedDeliveryDetails = sorted.map(deliveryDetail => ({...deliveryDetail, pickupTime: Utilities.formatDate(deliveryDetail.pickupTime, "EST", 'h:mm a') }));

Спасибо. Не могу поверить, как долго я работал над этим и так и не понял, лол.

Tree 22.03.2022 02:00

Другие вопросы по теме