簡體   English   中英

Javascript編號間隔搜索優化

[英]Javascript number interval search optimization

正如主題所說,當涉及大量間隔時,我遇到了優化問題

變量:FirstPrice,LastPrice,Increment和用戶寫入的數字

任務:需要在特定間隔內將數字四舍五入到一側或另一側。

例如:FirstPrice = 0.99,LastPrice = 9.99,增量= 1用戶編號= 5.35

工作流程:我需要找到一個數字存在的間隔,我想到的是將數字壓入數組。 因此,對於此示例數組將是:[“ 0.99”,“ 1.99”,“ 2.99”,“ 3.99”,“ 4.99”,“ 5.99”,“ 6.99”,“ 7.99”,“ 8.99”,“ 9.99”]。 然后我使用for循環來查找存在哪個間隔(在這種情況下,數字= 5.35)。 在這種情況下,間隔為4.99到5.99。 然后用戶號更新為4.99或5.99。

問題:這樣做的效果很好,數量少。 但是執行高范圍確實很困難。 例如,如果FirstPrice = 1 LastPrice = 1000000且Increment =1。那么我的數組將獲得數千個值,並且將每個值推入數組並找到數字的時間太長。 數組獲取〜999999個值,然后循環遍歷所有這些值以找到特定的時間間隔。

所以我認為我的問題很清楚。 優化。 我需要一種更好的方法。 我嘗試將價格范圍降低到一半,但是間隔是錯誤的。 嘗試使用插入的號碼,但發生了相同的問題。

如果我錯了,請指正我,但這不是簡單的:

lower = floor((q - s) / i) * i + s
upper = lower + i

哪里:

q = User number
s = FirstPrice
i = Increment 

 function foo(q, s, i) { const lower = Math.floor((q - s) / i) * i + s; const upper = lower + i; return [lower, upper]; } console.log( foo(5.35, 0.99, 1), foo(5.35, 0.99, 2), foo(5.35, 0.99, 3) ); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM