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?

Jeremy Smith
quelle

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]"
mu ist zu kurz
quelle
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.

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

Seien Sie gewarnt, es ist destruktiv!

John H.
quelle
11

Sie können auch die Array-Verkettung verwenden :

a = [2, 3]
[1] + a
=> [1, 2, 3]

Dadurch wird ein neues Array erstellt und das Original nicht geändert.

ma11hew28
quelle
11

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

steenslag
quelle
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
akuhn
quelle
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