我希望按拾取時間對一組物件進行排序,但我需要將時間格式化,就像排序后它們在下面的陣列中一樣。顯然,我遇到的問題是您不能像使用整數一樣使用 .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'}]
這就是我用來在 Apps 腳本中格式化它們的方法。
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)
}
uj5u.com熱心網友回復:
宣告時不要格式化日期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') }));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/446547.html
標籤:数组 排序 谷歌应用脚本 谷歌表格 javascript 对象
