2011-12-20 29 views
0

我想弄清楚什麼是在JavaScript中存儲和訪問數據的最佳方式。在javascript中訪問和存儲數據集

我想選擇與之前未知值的「標識符」相關的數據,或者添加一個新的隨機「標識符」的數據集。

我這樣做的數組或對象?

陣列存儲

{ 
"data": [ 
    { 
     "key1": "identfifier1", 
     "key2": "value2", 
     "key3": "value3" 
    }, 
    { 
     "key1": "identfifier2", 
     "key2": "value2", 
     "key3": "value3" 
    } 
] 
} 
  • 陣列保持在orderd JS。這對我來說很重要,因爲我想在屏幕上顯示它的數據。
  • 與「識別符」 asscoictated數據集的更復雜的選擇(某種環或含有輔助方法是需要的,例如data.containing(「標識符」)。KEY2)

對象存儲

{ 
"data": { 
    "identfifier1": { 
     "key1": "value1", 
     "key2": "value2", 
     "key3": "value3" 
    }, 
    "identfifier2": { 
     "key1": "value1", 
     "key2": "value2", 
     "key3": "value3" 
    } 
} 
} 
  • 對象不留orderd在JS,但是這對我來說是重要的監守其數據在屏幕上顯示(我會擁有的數據的每個輸出之前,整個對象進行排序)
  • 方便,快捷selecti與「標識符」 asscoictated數據(只是做identfifier1.key2爲expample,沒有循環或輔助方法nedded搜索數據集包含「標識」)

任何想法,方法,最好能做到這一點的方法呢?一種比另一種好?

+0

這些數據來自哪裏?服務器端? –

+0

是從服務器,有些用戶會操縱一些,也許添加或刪除,並將其發回。它將全部使用JSON。 – Hans

回答

1

使用JSON(您的第二種方法)。它的目的就是爲了這個目的,並且有許多本地功能和附加的庫來支持你的工作。使用數據庫(例如CouchDB或MongoDB)很容易,而不必轉換對象。

+0

編輯了我的問題,現在第一個也是JSON ... – Hans

1

如果您執行的讀取次數多於寫入次數,則最好使用該對象並保留單獨的對象鍵數組,以便在需要時對其進行排序。

data = { 
    identfifier1 : { key1: value1, 
      key2: value2, 
      key3: value3 
      }, 
    identfifier2 : { key1: value1, 
      key2: value2, 
      key3: value3 
      } 
} 

而當你添加新鍵:

data.identifier3 = ... 

更新排序:

var sorted = Object.keys(data).sort(); 

要遍歷在一個有序的方式:

for(var l = sorted.length, i = 0; i < l; ++i) { 
    alert(data[sorted[i]]); 
} 

或者你可以只只在絕對需要時才進行排序,t他的寫作方式會更有效率。

你可以爲所有這些快速閱讀和排序的封裝「類」,只有在需要的時候。