web-dev-qa-db-fra.com

Quel est le moyen le plus simple de pousser un élément au début du tableau?

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

187
Jeremy Smith

Qu'en est-il de la méthode unshift ?

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

Et en usage:

irb>> a = [ 0, 1, 2]
=> [0, 1, 2]
irb>> a.unshift('x')
=> ["x", 0, 1, 2]
irb>> a.inspect
=> "["x", 0, 1, 2]"
361
mu is too short

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 est la valeur.

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

attention, c'est destructeur!

20
John H

Vous pouvez également utiliser concaténation de tablea :

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

Cela crée un nouveau tableau et ne modifie pas l'original.

9
ma11hew28

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écuter ces impressions

Found 1 methods
- Array#unshift

Vous pouvez installer methodsolver en utilisant

gem install methodsolver
7
akuhn

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

3
steenslag