Gibt es ein äquivalent zu Array#find_index für den letzten index in ruby?
Array#find_index
können Sie den index des ersten Elements, das entweder
- ist gleich eine
object
oder - macht einen block übergeben, um es zu true ausgewertet
Array#rindex
können, können Sie sich den index des letzten Elements das entspricht einem object
, aber gibt es etwas, das Ihnen erlaubt, zu finden, den index des letzten Elements das macht einen block übergeben, um es zurück wahr?
Sonst, sollte ich so etwas tun
last_index = array.length - 1 - array.reverse.find_index{|item| item.is_wanted?}
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ruby 1.9.2
Array#rindex
akzeptiert block: http://apidock.com/ruby/Array/rindexSo eine Schande, es kommt bis 1.9.2. In der Zwischenzeit, wenn Sie nicht umkehren wollen dein array, sondern aufzählen, die Suche in umgekehrter Richtung, die Sie tun können,
last_index = array.length - 1 - array.rindex.find_index{|item| item.is_wanted? }
(1.8.7) istOder Sie konnte etwas tun, wie
ist ein bisschen hübscher
Könnten Sie eine marginale Prägnanz Verbesserung in Ihrem Problemumgehung entfernen.Länge, da negative Indizes zählen vom Ende der Zeichenfolge in []
Scheint es immer noch schrecklich ineffizient, rückwärts die ganze Reihe, wenn alles, was Sie tun möchten, ist die Iteration rückwärts durch, aber das ist Ihre Effizienz vs ästhetik Urteil Anruf
Dies ist ein wenig off-topic, aber jedes mal, wenn Sie haben eine Sammlung mit einer Größe, und Sie wollen ein Ergebnis einer anderen Größe, die Sie verwenden können, zu injizieren. Die meisten der Zeit es vermeidet unnötige Schleife von Operationen auf den Eingangs-Sammlung.
Zum Beispiel, wenn ich wollen finden Sie den index der letzten null: