[英]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.