基礎位置I與「更新」,其中每個「更新」包括一個時間戳的陣列和消息JSON對象:插入元件成DOM,時間戳
updates : {
{
timestamp : 1329505671,
text : 'test1'
},
{
timestamp : 1329505783,
text : 'test2'
}
}
使用jQuery,我解析將這些內容插入到DOM元素中,並按照接收的順序將它們插入到同一級別。他們根據我在AJAX調用中的SQL查詢預排序。
現在,我有一個經常性的AJAX調用,檢查是否有新的更新。如果找到更新,則需要將其插入DOM中適當的位置。
我不能假設,這些更新將始終在列表中的最新更新,所以,我需要一種方法來找出哪些DOM更新後插入新的更新。
我曾計劃創造各種各樣的Map<int, DOMUpdate>
(updates[timestamp] = DOMUpdate
在Javascript)。
有幾個缺點這個計劃,雖然:
- 我不得不尋找/尋找 哪些時間戳後把更新創建一個快速的二進制搜索算法。
- 我不能有重複的時間戳。
所以我的問題是,如果其他人做了類似的事情,如果是的話,你是如何處理它?請讓我知道,如果我以任何方式不清楚。
呀,這是一種選擇,OFC,但我想它是不是線性搜索速度更快一點。我想它應該足夠快。 – crush 2012-02-17 19:45:30
線性搜索幾乎是唯一的方法。你必須首先找到比它更新的第一個元素,並將它追加到它之前。你也可以用過濾器方法來做到這一點,但我不希望它有更快的速度,因爲它仍然需要搜索它們。我更新了答案,以顯示如何退出'.each()' – 2012-02-17 19:47:22
我想線性實際上是一條路,因爲雖然更新可能不是最新的,但它肯定會處於上半部分的更新。所以它至少與二分查找一樣快。感謝您的意見。 – crush 2012-02-17 19:59:49