簡單的問題,什么更好?請用 1-2 句話解釋原因。我對 JSON 檔案的處理不多,但我認為將來我會更頻繁地使用它。所以最好從合適的結構開始,而不是作業一段時間然后意識到另一種結構會更好。
“id”作為鍵:
{
"0": {
"name": "name1",
"bdate": "bdate1",
"mail": "mail1",
"sex": "sex1"
},
"1": {
"name": "name2",
"bdate": "bdate2",
"mail": "mail2",
"sex": "sex2"
},
"2": {
"name": "name3",
"bdate": "bdate3",
"mail": "mail3",
"sex": "sex3"
}
}
資料中的“id”:
[
{
"id":"0",
"name": "name1",
"bdate": "bdate1",
"mail": "mail1",
"sex": "sex1"
},
{
"id":"1",
"name": "name2",
"bdate": "bdate2",
"mail": "mail2",
"sex": "sex2"
},
{
"id":"2",
"name": "name3",
"bdate": "bdate3",
"mail": "mail3",
"sex": "sex3"
}
]
uj5u.com熱心網友回復:
如果在某些情況下您需要提前查找ID,則使用按 ID 索引的物件將使查找物件變得更加容易。有了這個,使用你的第一種方法會讓你很容易地找到物件:
const personObj = allObjects[id]
如果您改用陣列,則必須遍歷整個陣列才能找到它:
const personObj = allObjects.find(
obj => obj.id === id
);
這要慢一個數量級(不過,這僅在資料量非常大時才相關)。
當然,請確保一個 ID 唯一標識一個且僅一個物件。
如果 ID恰好與它們在陣列中的位置相對應- 如本例所示 - 您可以使用該陣列代替并使用allObjects[id]- 但如果專案從陣列中添加或洗掉,這可能會在以后產生問題。
uj5u.com熱心網友回復:
如果您需要通過 id 查找用戶,那么擁有地圖肯定會更快。在大多數使用鍵查找值的情況下,映射將是提供最佳性能和最直接編碼的選擇。
如果您總是需要獲取每個用戶,那么串列可能更方便,但是在需要時可以輕松地將地圖轉換為串列。
大多數語言都有簡單的語法,允許您從地圖創建串列,反之亦然。轉換成本大致相同。
不要忘記串列包含額外資訊.. 即地圖上不可用的訂單。因此,如果順序很重要……例如佇列中的專案或類似專案,則選擇使用串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342676.html
標籤:javascript 数组 json
