我正在嘗試根據其中一個值從稱為資料的物件陣列創建新的物件陣列。
每個物件都是一個事件,并且有一個 startDateTime 和一個 endDateTime 值,它是一個字串,格式如下:
"startDateTime": "2022-10-28T21:01:11"
和
"endDateTime": "2022-10-29T21:01:11"
我想要的是三個陣列:
- 一個與已經過去的事件。我在考慮當前日期和時間之前的 endDateTime 。
- 包含當前正在進行的事件的第二個陣列。endDateTime 在當前日期和時間之后。
- 最后是第三個陣列,其中包含尚未開始的事件。startDateTime 在當前日期和時間之后。
我嘗試了以下方法:
為了獲得當前日期和時間,我使用了這個:
var date = new Date();
var dateString =
date.getUTCFullYear() "-"
("0" (date.getUTCMonth() 1)).slice(-2) "-"
("0" date.getUTCDate()).slice(-2) "T"
("0" date.getUTCHours()).slice(-2) ":"
("0" date.getUTCMinutes()).slice(-2) ":"
("0" date.getUTCSeconds()).slice(-2);
console.log(dateString)
// 2022-10-28T09:00:00
原始陣列看起來有點像這樣,但還有許多其他事件:
const data = [
{
"name": "Dinner",
"numOfAttending": 4,
"startDateTime": "2018-04-28T19:00:00",
"endDateTime": "2018-04-28T22:00:00"
},
{
"name": "Studying",
"numOfAttending": 1,
"startDateTime": "2020-09-01T09:00:00",
"endDateTime": "2023-06-10T15:00:00"
},
{
"name": "Graduating!",
"numOfAttending": 25,
"startDateTime": "2023-06-11T09:00:00",
"endDateTime": "2023-06-11T12:00:00"
}
]
然后我制作了三個空陣列來填充:
const eventsDone = []; // This one should have the past dinner event in it.
const eventsOngoing = []; // This one should have current studying event in it.
const eventsUpcoming = []; // And this one should have the upcoming graduating event in it.
我一直在嘗試使用 for 回圈來執行此操作,遍歷原始陣列,如果滿足條件,它們將被推送到相應的陣列:
for (let i = 0; i < data.length; i ) {
if (data[i].endDateTime < dateString) {
eventsDone.push(data[i]);
}
else if (data[i].endDateTime > dateString) {
eventsOngoing.push(data[i]);
}
else if (data[i].startDateTime > dateString) {
eventsUpcoming.push(data[i]);
}
}
但沒有運氣。
提前致謝!
uj5u.com熱心網友回復:
這似乎更精確。首先檢查過去,然后檢查未來(你說得對)。其余的一切都在進行中。
const data = [{
"name": "Dinner",
"numOfAttending": 4,
"startDateTime": "2018-04-28T19:00:00",
"endDateTime": "2018-04-28T22:00:00"
},
{
"name": "Studying",
"numOfAttending": 1,
"startDateTime": "2020-09-01T09:00:00",
"endDateTime": "2023-06-10T15:00:00"
},
{
"name": "Graduating!",
"numOfAttending": 25,
"startDateTime": "2023-06-11T09:00:00",
"endDateTime": "2023-06-11T12:00:00"
}
]
const eventsDone = []; // This one should have the past dinner event in it.
const eventsOngoing = []; // This one should have current studying event in it.
const eventsUpcoming = [];
var dateString = (new Date()).toISOString();
for (let i = 0; i < data.length; i ) {
if (data[i].endDateTime < dateString) {
eventsDone.push(data[i]);
} else if (data[i].startDateTime > dateString) {
eventsUpcoming.push(data[i]);
} else {
eventsOngoing.push(data[i]);
}
}
console.log(eventsDone)
console.log(eventsOngoing)
console.log(eventsUpcoming)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523810.html
標籤:javascript数组排序for循环javascript 对象