2016-02-12 120 views
0

我需要平移和縮放大量時間戳數據。有太多的數據將其全部綁定到dom或者瀏覽器會陷入停滯。時間戳數據從最小到最大排序。Javascript:如何從時間戳數組中查找時間間隔中的最大N個時間戳

所以我們的想法是找到顯示x軸上的開始和結束時間點之間的數據,並將其減少到瀏覽器處理的合理數量N。

這可以通過將開始點和停止點之間的間隔分成N個參考時間戳,然後在距離每個參考最近的數據中找到時間戳來完成。

我可以對此進行編碼,但可能不如現有解決方案那麼高效。

是否有一個圖書館,可能crossfilter,可以做到這一點?

回答

1

您有一個有序的數據數組,您正在搜索數據中的任意點。您的最佳搜索算法是二進制搜索,它將查找O(log(n))時間中的開始點和結束點的索引。

Underscore.js具有二進制搜索的實現:http://underscorejs.org/#indexOf

不知道crossfilter,但檢查他們的範圍過濾器。

一旦你有了開始和結束索引,你就知道它們之間有多少個點。然後你可以決定如何瘦身。對於如何瘦身,沒有一個正確的答案,這取決於你所講述的數據和故事。您可以採樣每個第n個點,您可以平均或最大分區或許多其他選項。

但是,您選擇了減薄,交叉繪圖可以通過「分組」(例如,分成等寬分區)然後「減少」組來完成。

+0

謝謝,你的回答似乎是合理的。我必須編寫自己的二進制搜索,因爲我不是在尋找完全匹配,而是最接近時間戳。 –

+0

在這種情況下,請查看sortedIndex。 它告訴你你的值將被插入的索引(使用二進制搜索)。 – masonk

+0

謝謝,我沒有嘗試sortedIndex。這是我的版本的兩倍。 –