我有一個如下所示的陣列物件
[
{
id: 123,
startdate: '2022-06-05',
enddate: '2023-04-05'
},{
id: 123,
startdate: '2021-06-05',
enddate: '2021-04-05'
}
]
isHistory如果它屬于當前年份,我必須根據 startdate 的條件添加一行。就像上面的例子一樣,結果應該是
[
{
id: 123,
startdate: '2022-06-05',
enddate: '2023-04-05',
isHistory: false
},{
id: 123,
startdate: '2021-06-05',
enddate: '2021-04-05',
isHistory: true
}
]
我怎樣才能做到這一點?我正在嘗試映射物件,但是如何比較每次迭代的 startdate 并添加一個新行,我正在為此苦苦掙扎。
有什么建議么?
uj5u.com熱心網友回復:
用于forEach回圈陣列并修改每個物件。
let array = [{
id: 123,
startdate: '2022-06-05',
enddate: '2023-04-05'
}, {
id: 123,
startdate: '2021-06-05',
enddate: '2021-04-05'
}];
const currentYear = new Date().getFullYear();
array.forEach(obj => obj.isHistory = obj.startdate.startsWith(currentYear));
console.log(array);
uj5u.com熱心網友回復:
您可以將資料作為 Date 物件進行比較。查看您的代碼,我不確定您是否正確傳達了您的邏輯,因此我的示例顯示了如何確定當前日期是否介于開始日期和結束日期之間。
let array = [{
id: 123,
startdate: '2022-06-05',
enddate: '2023-04-05'
}, {
id: 123,
startdate: '2022-01-05',
enddate: '2022-06-05'
}, {
id: 123,
startdate: '2023-04-05',
enddate: '2024-06-04'
}];
const today = new Date()
array.forEach(obj => {
const startDate = new Date(obj.startdate)
const endDate = new Date(obj.enddate)
obj.isHistory = (today > endDate) // end date is in the past
obj.isCurrent = ((today <= endDate) && (today >= startDate)) // before end, after start
obj.isFuture = (today < startDate) // start date is in future
});
console.log(array);
uj5u.com熱心網友回復:
您可以在陣列上回圈并檢查每個物件,如下所示:
const arr = [
{
id: 1,
startdate: "2022-06-05",
enddate: "2023-04-05"
},
{
id: 12,
startdate: "2021-06-05",
enddate: "2021-04-05"
}
];
arr.map((item) => {
if (item.startdate.includes("2022")) {
item.isHistory = false;
} else {
item.isHistory = true;
}
return item;
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/520878.html
