Quelle est la façon la plus simple de pousser un élément au début du tableau?


207

Je ne peux pas penser à une façon d'une ligne pour le faire. Y a-t-il un moyen?

Réponses:


387

Qu'en est-il de l'utilisation de la unshiftméthode?

ary.unshift(obj, ...) → ary
Ajoute des objets à l'avant de soi, déplaçant d'autres éléments vers le haut.

Et en cours d'utilisation:

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

C'est celui que je cherchais, j'ai oublié le nom.
Ed S.

1
J'ai regardé, mais je ne les ai pas vus dans un rapide scan.
Ed S.

1
@Ed: La liste des méthodes en haut de la page pourrait être mieux formatée, il est très difficile de la scanner visuellement telle quelle. Je l'ai trouvé parce que je connaissais le nom de la méthode que je cherchais :)
mu est trop court

118
Si vous avez du mal à vous rappeler entre shiftet unshiftquant à ce qui ajoute au tableau et ce qui supprime du tableau, supprimez mentalement un `` f '' des noms et vous obtenez une image trop claire de la direction. (Et puis vous devez vous rappeler que ces méthodes ne fonctionnent pas sur la "fin" du tableau.;)
Phrogz

3
@Phrogz La meilleure technique mnémonique que j'ai entendue depuis des années! :-)
konung

47

Vous pouvez utiliser insert:

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

Où le premier argument est l'index à insérer et le second la valeur.


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

attention, c'est destructeur!



11

Depuis Ruby 2.5.0, Array est fourni avec la prepend méthode (qui n'est qu'un alias pour la unshiftméthode).


1
Cela fonctionne également avec ruby ​​2.4.4p296, alors peut-être juste avec ruby ​​2.4?
Obromios

9

Vous pouvez utiliser methodsolver pour trouver les fonctions Ruby.

Voici un petit script,

require 'methodsolver'

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

Exécution de ces impressions

Found 1 methods
- Array#unshift

Vous pouvez installer methodsolver en utilisant

gem install methodsolver

Cool, je ne pensais pas que ce serait possible d'écrire LOL
Marko Avlijaš

irb> require 'methodsolver'causes LoadError: cannot load such file -- method_sourcede ... de /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
Essayez d'utiliser pryau lieu deirb
akuhn
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.