我必須從一個有最大偏移量(1000)和限制(20)的API中提取資料。因此,在兩個日期(從和到)之間有可能存在比請求回傳的更多的結果。
我希望獲得這兩個日期之間的完整資料集,因此我正試圖想出一個解決方案來實作這一目標。
我的想法是,首先提出一個請求,例如:
https://api.com/?from=2021-07-20& to=2021-07-24& limit=20& offset=1000
如果請求回傳的元素少于20個,搜索就結束了,我已經得到了范圍之間的所有可用資料。但是如果請求回傳20個元素,那么這個范圍內很可能有更多的資料,所以我必須找到一種方法來繼續分割范圍,直到這個條件為假。
我想過像這樣分割范圍:
我想過像這樣分割范圍。
from = from
to_1 = 2021-07-22
from_1 = 2021-07-22
到=2021-07-24
然后將這些范圍傳遞給遞回函式,直到找到所有需要的子范圍為止。
輸出將是這樣的。
[(2021-07-21,2021-07-22),(2021-07-22,2021-07-23),(2021-07-23, 2021-07-24)]
這個解決方案的問題是,我正在擴展from's和to's,所以我無法設法使用遞回函式,我正在苦惱如何解決這個問題。
編輯:我已經添加了 "javascript "標簽,因為該解決方案將在該語言中實作,但也歡迎大家提出意見/假代碼。
uj5u.com熱心網友回復:
似乎你在尋找二進制搜索。
你的遞回函式應該是這樣的(這是JS的偽代碼):
你的遞回函式應該是這樣的(這是JS的偽代碼):
function get_ranges(from,to)
{
const items = request(from, to)
if (items.length < 20) {
return [[from, to]]
}
const date_between = calculate_date_between(from, to)
const left_ranges = get_ranges(from, date_between)
const right_ranges = get_ranges(date_between, to)
return [...left_ranges, ...right_ranges] 。
}
const result = get_ranges(min_date, max_date)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/326073.html
標籤:
上一篇:從多個陣列中找出最大和最小的K值
