Array von Elementen vs. Mapping + Array von IDs mit web3js?

In den meisten Artikeln empfehlen sie die Verwendung von mapping. Aber Zuordnungen erlauben es nicht, ihre Elemente direkt zu iterieren. Und niemand sagt, was zu tun ist, wenn Sie alle gelagerten Gegenstände holen müssen.

In meinem Fall muss ich alle Artikel speichern und sie dann im Web wie Cryptokitties anzeigen. Hinweis: Sie können alle Elemente anzeigen.

Was sollte also besser sein - alle Werte als Array speichern oder alle Werte als Mapping speichern und IDs für sie als Array speichern? Und welcher Fall ist besser für "Paging"? Vielleicht gibt es noch andere Lösungen?

Antworten (1)

Es ist besser, alle Werte als Zuordnung zu speichern und ihre IDs in einem Array zu speichern. Wie beim Mapping können Sie über den Schlüssel direkt auf einzelne Datensätze zugreifen. Der ungünstigste Fall Die Zeitkomplexität des Zugriffs auf einzelne Datensätze ist O(1) . Wenn Sie jedoch ein Array verwenden, um auf einen bestimmten Datensatz zuzugreifen/zu suchen, müssen Sie das gesamte Array durchlaufen, und die Zeitkomplexität im schlimmsten Fall beträgt O(N) . Sie müssen alle in einem Array gespeicherten Elemente durchlaufen. (Ich gehe davon aus, dass sich die IDs der gespeicherten Datensätze von den Array-Indizes unterscheiden).

Wenn Sie Zuordnungsschlüssel in einem Array speichern, können Sie alle Datensätze mit den in einem Array gespeicherten Schlüsseln abrufen. Mit diesen Schlüsseln können Sie alle Datensätze abrufen.

Weitere Informationen finden Sie im folgenden Blog -

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