Was ist der einfachste Weg, ein Element an den Anfang des Arrays zu verschieben?


207

Ich kann mir keinen einzeiligen Weg vorstellen, dies zu tun. Gibt es einen Weg?

Antworten:


387

Was ist mit der unshiftMethode?

ary.unshift(obj, ...) → ary
Stellt Objekte vor sich selbst und bewegt andere Elemente nach oben.

Und im Einsatz:

irb>> a = [ 0, 1, 2]
=> [0, 1, 2]
irb>> a.unshift('x')
=> ["x", 0, 1, 2]
irb>> a.inspect
=> "["x", 0, 1, 2]"

Das ist derjenige, den ich gesucht habe, habe den Namen vergessen.
Ed S.

1
Ich schaute, sah sie nur nicht in einem schnellen Scan.
Ed S.

1
@Ed: Die Methodenliste oben auf der Seite könnte besser formatiert sein. Es ist sehr schwierig, sie visuell zu scannen. Ich habe es gefunden, weil ich den Methodennamen kannte, nach dem ich gesucht habe :)
mu ist zu kurz

118
Wenn Sie zwischen Schwierigkeiten Erinnern haben shiftund unshiftdarüber, welche fügt den Array und der entfernt von dem Feld, fällt ein ‚f‘ aus dem Namen geistig und Sie erhalten ein allzu klares Bild über die Richtung. (Und dann muss man bedenken, dass diese Methoden am "Ende" des Arrays nicht funktionieren .;)
Phrogz

3
@Phrogz Die beste Mnemonik-Technik, die ich seit Jahren gehört habe! :-)
Konung

47

Sie können verwenden insert:

a = [1,2,3]
a.insert(0,'x')
=> ['x',1,2,3]

Dabei ist das erste Argument der Index, an dem eingefügt werden soll, und das zweite der Wert.


23
array = ["foo"]
array.unshift "bar"
array
=> ["bar", "foo"]

Seien Sie gewarnt, es ist destruktiv!



11

Seit Ruby 2.5.0 wird Array mit der prepend Methode ausgeliefert (die nur ein Alias ​​für die unshiftMethode ist).


1
Dies funktioniert auch mit Ruby 2.4.4p296, also vielleicht nur mit Ruby 2.4?
Obromios

9

Sie können verwenden methodsolver, um Ruby-Funktionen zu finden.

Hier ist ein kleines Skript,

require 'methodsolver'

solve { a = [1,2,3]; a.____(0) == [0,1,2,3] }

Ausführen dieser Drucke

Found 1 methods
- Array#unshift

Sie können Methodsolver mit installieren

gem install methodsolver

Cool, hätte nicht gedacht, dass dies möglich sein würde, um LOL
Marko Avlijaš

irb> require 'methodsolver'Ursachen LoadError: cannot load such file -- method_sourcevon ... von /var/lib/gems/1.9.1/gems/methodsolver-0.0.4/lib/methodsolver.rb:2. Ruby 1.9.3p484, irb 0.9.6, Ubuntu 14.
Camille Goudeseune

1
Versuchen Sie es mit pryanstelle vonirb
akuhn
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.