Ich habe eine Sammlung von Objekten @users
, die jeweils ihr Attribut id
haben.
Ich habe auch ein geordnetes Array von ids
.
¿Gibt es eine magische Möglichkeit, die Sammlung mit dieser Liste von IDs zu sortieren? Ohne einen weiteren Aufruf an die Datenbank, wenn möglich.
Danke !!!
In der Tat müssen Sie nicht sortieren, erstellen Sie einen Zwischenindex-Hash, es ist O (n):
%Vor%Wenn Sie immer noch einen Sortieransatz versuchen wollten, wäre die Schwartzsche Transformation ausreichend:
%Vor% Die Verwendung von index
innerhalb einer Schleife ist jedoch eine rote Markierung: O (n ^ 2) Zeit. Wir können einen Zwischen-Hash erstellen, um zu O (n * log n) zurückzukehren:
Sie müssen sicher nicht zur DB gehen, da Sie bereits die User
-Objekte haben. Obwohl die Benutzer sich in einem Array befinden, möchten Sie wahrscheinlich eine temporäre Karte erstellen von id = & gt; User
, um das Endergebnis zu erhalten.
Wenn Sie auf die ID jedes Benutzers zugreifen können, indem Sie user.id aufrufen, können Sie das Array wie folgt sortieren:
%Vor%Wenn Sie die IDs nur in einem separaten Array von den Objekten haben, können Sie Folgendes tun: Zip die zwei Arrays zusammen, sortieren Sie das resultierende Array auf die IDs und sammeln Sie dann die sortierten Benutzer aus dem Ergebnis.
%Vor%Werfen Sie einen Blick darauf: Ссылка
Tags und Links ruby ruby-on-rails sorting