目前我們有一個AJAX驅動的站點,它返回以下格式的JSON響應:[{"n":"bob"}, {"n":"jim"}, ..., {"n":"alex"}]
。基本上是一個json對象的數組。
但是我們正在考慮如此構建它:[["bob"], ["jim"], ..., ["alex"]]
。基本上是一組數組。
明顯的區別在於,我們不是通過它的屬性訪問數據,而是通過假定的索引位置(即array [0] == name)來訪問它,但除此之外,我很好奇什麼是優點/缺點是每個。有趣的因素:客戶端的性能(包括構建數據結構和檢索其值),帶寬(顯然是在較大的數據集上或者對於較慢的互聯網連接,比如移動設備),設計模式/最佳實踐,其他人如何設計響應, etc ...json數組v對象 - 優缺點
回答
當使用對象在陣列格式,可以每個項目加載更多的數據,而不是僅僅
n
。[{ 'name' : 'John', //more data about john },{ 'name' : 'Joe', //more data about joe }] //myArray[0].name = John
當使用該數組時,數據返回被假定爲同一種類。
['John','Joe'...] //all names //myArray[0] = John
,但是這一切都歸結到你如何分析數據。
這樣的結構化數據:
[["bob"], ["jim"], ..., ["alex"]]
是完全錯誤的。爲什麼把名字放在一個數組中,放在一個名稱數組中?第二個級別是什麼?
對不起,我試圖給一個簡單的例子,以避免混淆。如果您更喜歡更復雜的示例,請說明列表中的每個項目不僅包含姓名,也可能包含個人的全部個人資料數據。 – 2012-04-12 05:29:51
@paulsmith然後數組中的對象(我的答案中的第一個樣本)將是一個更安全的解決方案。 – Joseph 2012-04-12 05:33:00
該數組方法將阻止您使用有意義的索引名稱,所以我會使用JSON對象。你還會發現大多數編程語言都有很好的庫來創建JSON輸出。
除非您正在處理非常大的數據集,否則我認爲陣列方法不會提供任何明顯的性能優勢。
從可讀性的角度來看,JSON對象方法更好。但是你是否說數組實際上比對象更快?如果是這樣,在什麼方面?訪問?解析?記憶? – 2012-04-12 05:31:35
http://stackoverflow.com/questions/8423493/what-is-the-performance-of-objects-arrays-in-javascript-specifically-for-googl – 2012-04-12 06:29:15
這個問題不夠精確,答案有「明顯」的味道。 – Vincent 2012-04-12 05:08:33
只是'''bob','jim','alex']'? – neoascetic 2012-04-12 05:08:36
*「假設指數頭寸」* - 您已回答了您自己的問題,爲什麼這通常是一個壞主意。 – deceze 2012-04-12 05:16:31