Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the easiest way to push an element to the beginning of the array?

Tags:

arrays

ruby

What about using the unshift method?

ary.unshift(obj, ...) → ary
Prepends objects to the front of self, moving other elements upwards.

And in use:

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

You can use insert:

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

Where the first argument is the index to insert at and the second is the value.


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

be warned, it's destructive!


Since Ruby 2.5.0, Array ships with the prepend method (which is just an alias for the unshift method).


You can also use array concatenation:

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

This creates a new array and doesn't modify the original.


You can use methodsolver to find Ruby functions.

Here is a small script,

require 'methodsolver'

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

Running this prints

Found 1 methods
- Array#unshift

You can install methodsolver using

gem install methodsolver