Apa cara termudah untuk mendorong elemen ke awal array?


207

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

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]"

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.


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

diperingatkan, itu merusak!



11

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


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.