Solidity

項目數組與 web3js 的映射 + id 數組?

  • September 21, 2018

在大多數文章中,他們建議使用mapping. 但是映射不允許直接迭代它們的項目。如果您需要獲取所有儲存的物品,沒有人說該怎麼做。

就我而言,我需要儲存任何物品,然後像加密貓一樣在網路上顯示它們。注意:他們能夠顯示所有項目。

那麼什麼應該更好 - 將所有值儲存為數組或將所有值儲存為映射並將它們的 id 儲存為數組?哪種情況更適合“分頁”?也許還有其他解決方案?

將所有值儲存為映射並將它們的 id 儲存在數組中會更好。與映射的幫助一樣,您可以使用密鑰直接訪問單個記錄。最壞情況訪問單個記錄的時間複雜度是O(1)。但是,如果您使用數組來訪問/搜尋特定記錄,那麼您將不得不迭代整個數組,最壞情況下的時間複雜度將是O(N)。您將不得不遍歷儲存在數組中的所有元素。(我假設儲存的記錄的 id 與數組索引不同)。

如果您將映射鍵儲存在數組中,您將能夠使用儲存在數組中的鍵檢索所有記錄。通過使用這些鍵,您可以獲得所有記錄。

有關更多詳細資訊,請參閱以下部落格 -

https://blog.upstate.agency/mappings-arrays-87afc697e64f

引用自:https://ethereum.stackexchange.com/questions/59191