簡體   English   中英

數組是否比在javascript中存儲和搜索鍵值對的對象好?

[英]Is array better than objects for storing and searching key value pairs in javascript?

我正在從數據庫中獲取數據,並將其存儲在鍵值對的數組中,這樣我就可以如下獲取各個鍵的值

var test = [];
for ()            //fetching and storing from db
{
    test[key_array[i]] = "value i";
       .
       .
       .   
}


test["id_1"] = "value 1"; //to get the value of id_<number>

我們也可以通過對象來達到這個目的。 我想知道如果我們想要一個快速優化的代碼,哪個是更好的選擇

數組是否比在javascript中存儲和搜索鍵值對的對象好?

不。實際上,您不是將數組用作數組,而是將其用作對象。 你可以從字面上改變你的

var test = [];

var test = {};
// or
var test = Object.create(null); // To avoid it having a prototype

它會執行與您現在看到的相同的操作:

 var test = {}; test["id_1"] = "value_1"; console.log(test["id_1"]); var test2 = Object.create(null); test2["id_2"] = "value_2"; console.log(test2["id_2"]); 

(並且您應該更改它,因為僅將數組用於其對象功能會使維護代碼的人感到困惑。)

[]是一個屬性訪問器,它接受屬性名稱作為字符串。 (我們也將其與使用數字的標准數組一起使用,但是從理論上講,它們會在查找該屬性之前轉換為字符串,因為標准數組並不是真正的數組 ¹。)

當然,在ES2015 +中,您可能會使用Map而不是對象:

 const test = new Map(); test.set("id_1", "value_1"); console.log(test.get("id_1")); 


¹這是我貧乏的小博客上的帖子。

數組只是一種專門用於存儲事物序列的對象。 如果評估typeof [],它將產生“對象”。

https://eloquentjavascript.net/04_data.html#h_cqg63Sxe3o

數組的概念是存儲具有相同類型或邏輯結構的數據序列。 因此,邏輯將數據從db放入數組。

請注意,您應該避免這種情況,因為它會變得非常混亂:

 var test = []; test["id_1"] = "value_1"; test[-1] = "value_0"; console.log(test[-1],test["id_1"]); console.log(test.length,Array.isArray(test)); 

它使您認為test是一個數組(並且確實是),但是test[-1]test["id_1"]不屬於數組(這就是Array.isArray(test)返回true ,而test.length是仍等於0。請參閱Mister TJ Crowder提供的鏈接說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM