我在JavaScript中有一個n * n * n數組,其中我需要執行很多訪問。在JavaScript中訪問多維數組的最有效方法
我不需要按順序訪問所有元素,只需要在特定位置。如果可能的話,我也希望在使用之前不要分配數組單元的所有內存(其他數據直接需要幾MB內存)。
我正在尋找最有效的方法。 我試圖使用由內置鍵(x +'#'+ y +'#'+ z)索引的詞典,但它的效率不夠高。
你能提出一些其他有效的方法來實現這一目標嗎?
我在JavaScript中有一個n * n * n數組,其中我需要執行很多訪問。在JavaScript中訪問多維數組的最有效方法
我不需要按順序訪問所有元素,只需要在特定位置。如果可能的話,我也希望在使用之前不要分配數組單元的所有內存(其他數據直接需要幾MB內存)。
我正在尋找最有效的方法。 我試圖使用由內置鍵(x +'#'+ y +'#'+ z)索引的詞典,但它的效率不夠高。
你能提出一些其他有效的方法來實現這一目標嗎?
恐怕沒有比字典方法更快速的訪問對象的方法,因爲這就是Javascript中的一切。爲了不分配內存,你可以使用一個對象而不是一個數組:
var x = {};
var key = x + '#' + y + '#' + z;
x[key] = 'some value';
這將至少給你記憶的關注,但我不知道它真的太大的關注。 (另外,我甚至不確定如果使用數組,它將分配內存,因爲我不熟悉Javascript中的內存分配)。
我認爲你的多維數組非常好。如果創建的是稀疏的,它不會吃掉所有的內存,並且更像一個簡單的「字典」對象 - 您也可以使用嵌套對象。然而,我建議嵌套查找比在一個巨大的字典中更快,因爲散列函數變得更簡單,只需較少的密鑰。另外,從最裏面的維度加載或迭代完整數組的速度將明顯快於查詢巨大字典中的每個單個項目。畢竟,如果您實際上沒有遇到任何重要的性能問題,請使用您發現的易於編寫/讀取/使用的內容。
'yourArray [0] [1] [2]'有什麼問題? – 2013-02-27 20:45:40
@RocketHazmat顯然效率不夠高;;) – jondavidjohn 2013-02-27 20:46:01
字典方法效率不夠高?我對你有壞消息:沒有更好的方式來訪問數據(至少在一般情況下)。順便說一句:幾MB的內存對於現在的計算機來說是沒有任何**的。 :D – freakish 2013-02-27 20:46:56