Apa cara termudah untuk mendorong elemen ke awal array?

207

Saya tidak bisa memikirkan cara satu baris untuk melakukan ini. Apakah ada cara?

Jeremy Smith
sumber

Jawaban:

387

Bagaimana dengan menggunakan unshiftmetode ini?

ary.unshift(obj, ...) → ary
Sertakan objek ke depan diri, gerakkan elemen lainnya ke atas.

Dan digunakan:

irb>> a = [ 0, 1, 2]
=> [0, 1, 2]
irb>> a.unshift('x')
=> ["x", 0, 1, 2]
irb>> a.inspect
=> "["x", 0, 1, 2]"
mu terlalu pendek
sumber
Itu yang saya cari, lupa namanya.
Ed S.
1
Saya melihat, hanya tidak melihat mereka dalam pemindaian cepat.
Ed S.
1
@ Ed: Daftar metode di bagian atas halaman bisa diformat lebih baik, sangat sulit untuk memindai secara visual seperti apa adanya. Saya menemukannya karena saya tahu nama metode yang saya cari :)
mu terlalu pendek
118
Jika Anda mengalami kesulitan mengingat antara shiftdan tentang unshiftyang menambahkan ke array dan yang menghapus dari array, drop 'f' dari nama-nama secara mental dan Anda mendapatkan gambar yang terlalu jelas tentang arah. (Dan kemudian Anda harus ingat bahwa metode ini tidak bekerja pada "akhir" array.;)
Phrogz
3
@ Phrogz Teknik mnemonik terbaik yang pernah saya dengar bertahun-tahun! :-)
konung
47

Anda bisa menggunakan insert:

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

Di mana argumen pertama adalah indeks untuk memasukkan dan yang kedua adalah nilainya.

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

diperingatkan, itu merusak!

John H.
sumber
11

Anda juga dapat menggunakan penggabungan array :

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

Ini menciptakan array baru dan tidak mengubah yang asli.

ma11hew28
sumber
11

Sejak Ruby 2.5.0, Array dikirimkan dengan prepend metode (yang hanya merupakan alias untuk unshiftmetode ini).

steenslag
sumber
1
Ini juga berfungsi dengan ruby ​​2.4.4p296, jadi mungkin hanya dengan ruby ​​2.4?
Obromios
9

Kamu bisa memakai methodsolver untuk menemukan fungsi Ruby.

Ini skrip kecil,

require 'methodsolver'

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

Menjalankan cetakan ini

Found 1 methods
- Array#unshift

Anda dapat menginstal methodverver menggunakan

gem install methodsolver
akuhn
sumber
Keren, tidak mengira ini akan mungkin untuk menulis LOL
Marko Avlijaš
irb> require 'methodsolver'penyebab LoadError: cannot load such file -- method_sourcedari ... dari /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
Coba gunakan prysebagai gantiirb
akuhn