Каков самый простой способ переместить элемент в начало массива?

Я не могу придумать один способ сделать это. Есть ли способ?

6 ответов


как насчет использования unshift способ?

ary.unshift(obj, ...) → ary
Добавляет объекты к передней части себя, перемещая другие элементы вверх.

и в Использовать:

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

можно использовать insert:

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

где первый аргумент является индексом для вставки, а второй-значением.


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

будьте осторожны, это разрушительно!


вы также можете использовать конкатенация массива:

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

Это создает новый массив и не изменять оригинал.


можно использовать methodsolver чтобы найти функции Ruby.

вот небольшой скрипт

require 'methodsolver'

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

запуск этого печатает

Found 1 methods
- Array#unshift

вы можете установить methodsolver с помощью

gem install methodsolver

начиная с Ruby 2.5.0, массив поставляется с prepend метод (который является псевдонимом для unshift метод).