我無法得到這個結果:我需要一個日期表(格式為 YYYY-MM-DD),其中每個日期都包含請求。讓我解釋一下,基本上我瀏覽了一個已經存在的日期表,其中包含我的請求日期。在這個日期陣列瀏覽之后,我構建了我的新陣列,其中包含陣列所在的日期作為鍵,以及通過呼叫我的 API 獲得的關聯請求。
所以我有一個樣式陣列(在代碼片段中,dateArray[i] 對應于日期陣列所在的日期):
這是表格 daysRequests:
[{
date: dateArray[i],
requests: [idRequestX]
},
{
date: dateArray[i],
requests: [idRequestX, idRequestY]
}]
這是我在那里所做的推動:
this.daysRequests.push({
day: dateArray[i],
requests: [idRequest]
});
目前陣列中的推送為我創建了重復項,因為如果一個日期有多個請求,它無法在陣列中查找與現有日期對應的記錄并在請求子陣列中添加新請求。
我不知道如何檢查表中是否已存在日期,如果存在,請在其子表中添加新請求的 ID。
復雜的是它是一個包含陣列的鍵值字典。
而且,我無法管理。
有人有想法嗎?
uj5u.com熱心網友回復:
使用函式搜索具有相同日期的專案。如果它不存在,您可以推送該物件,如果它存在,則只推送idRequestto requests。
const index=this.daysRequest.findIndex((item) => item.day===dateArray[i]);
if (index==-1){ //index is -1 if the item isn't found
this.daysRequest.push({
day: dateArray[i],
requests: [idRequest]
});
}else{ //index is the index of daysRequest where your date is
this.daysRequest[index].requests.push(idRequest);
}
查看檔案:
我們可以看到“Mon Nov 14 2022 00:00:00 GMT 0100”這一天是重復的,但是有 2 個不同的請求,而不是合并
uj5u.com熱心網友回復:
您可以通過使用Array.findIndex()方法和Destructuring assignment運算子來實作這一點。
現場演示:
const arr = [{
date: '15-11-2022',
requests: [1]
}, {
date: '10-11-2022',
requests: [1, 3]
}];
const objToPush = {
date: '15-11-2022',
requests: [5]
};
const index = arr.findIndex(item => item.date === objToPush.date);
if (index === -1) {
arr.push(objToPush);
} else {
arr[index].requests = [...arr[index].requests, ...objToPush.requests]
}
console.log(arr);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/533637.html
