我正在開發一個反應應用程序,我在這裏大量使用從AJAX請求獲得的數據。比方說,我可以在myserver.com/people.json
檢索數據,該數據將如下所示:使用Ajax數據的設計模式。什麼是正確的方式?
var peopleList = [
{id:0, name: "John Smith", age: 30},
{id:1, name: "Jane Green", age: 19},
{id:2, name: "Bob Dylan", age: 69},
...
]
的people
名單可能最終數量10000萬至10萬,我將永遠不會顯示完整的列表,而是一些子表和個別實例通過id
進行標識。
我的問題不是顯示或查詢大的順序數據集,所以分頁可能是不相關的。就拿一些數據,我需要顯示:
var group = { name: "Woodworking", people_set: [12, 4, 678, 90] }
/* Should come out like:
WOODWORKING
- Peter Johnson
- Anna Holland
- David Green
- Erica Davis
*/
該帖子已被刪節,以更好地反映可用的選項和作者的推理
我看到五個可能的方式來處理這個:
1.製作和個人AJAX調用每一個實例需要顯示的時間
因此撥打myserver.com/people/<id>.json
只需檢索所需的數據。我擔心這可能會導致服務器出現很多小的請求,並且需要很多異步代碼才能混入我的代碼中。
2.製作一個完整的AJAX調用和迭代陣列每次
呼叫是由在初始化和數據被保存在存儲器中作爲一個陣列(見上文)。每次需要一個實例時,迭代該數組,直到找到一個匹配值爲.id
的對象。
3.如前面的,但查找從物體
我變換陣列爲對象,其中該字符串化鍵的ID來查找匹配。這可能會更快?
{ "0": { name: "John Smith", age: 30},
"1": { name: "Jane Green", age: 19},
"2": { name: "Bob Dylan", age: 69},
...
}
4.我信任列表索引相匹配的ID
當我控制數據庫,我永遠不會從0查找可以刪除記錄,並保持ids
的順序列表然後是簡單的:
peopleList[id]
這仍然似乎是一個高風險的做法作爲意外刪除主鍵將導致應用程序無法正常工作。
5.創建一個額外的indexArray快速查找索引
在創建peopleList
,塑造其持有的ID的附加陣列:[0, 1, 4, ...]
。通過在indexArray上使用indexOf()
快速找到索引,並使用該索引從peopleList中檢索記錄。
// This would be the way to lookup a name
peopleList[indexArray.indexOf(<id>)].name
討論和選擇
它看起來像方法1
和4
只是糟糕的設計。對於查找,方法2
比3
和5
慢兩個數量級(!),因此如果大量使用查找應該避免。雖然3
仍然稍快,但我決定去5
,因爲保持陣列看起來更優雅。
This post地址選項2
,3
和4
,並進行查找的基準比較。
可能最好分頁/抵消這一點。如果需要,只請求一大羣50-100人並加載更多塊。 –
我更新了這個問題,以說明爲什麼分頁不是答案恕我直言。 –