Cách dễ nhất để đẩy một phần tử đến đầu mảng là gì?


207

Tôi không thể nghĩ ra một cách duy nhất để làm điều này. Là có một cách?

Câu trả lời:


387

Còn việc sử dụng unshiftphương pháp thì sao?

ary.unshift(obj, ...) → ary
Chuẩn bị các đối tượng lên phía trước của bản thân, di chuyển các yếu tố khác lên trên.

Và đang sử dụng:

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

Đó là người tôi đang tìm, quên tên.
Ed S.

1
Tôi nhìn, chỉ không thấy chúng trong một lần quét nhanh.
Ed S.

1
@Ed: Danh sách phương thức ở đầu trang có thể được định dạng tốt hơn, rất khó để quét trực quan. Tôi đã tìm thấy nó bởi vì tôi biết tên phương thức mà tôi đang tìm kiếm :)
mu quá ngắn

118
Nếu bạn gặp khó khăn trong việc ghi nhớ giữa shiftunshiftthêm vào mảng và loại bỏ khỏi mảng, hãy bỏ 'f' khỏi tên một cách tinh thần và bạn sẽ có được một bức tranh quá rõ ràng về hướng. (Và sau đó bạn phải nhớ rằng các phương thức này không hoạt động ở "phần cuối" của mảng.)
Phrogz

3
@Phrogz Kỹ thuật ghi nhớ tốt nhất tôi đã nghe trong nhiều năm! :-)
konung

47

Bạn có thể sử dụng insert:

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

Trong đó đối số đầu tiên là chỉ mục cần chèn tại và đối số thứ hai là giá trị.


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

được cảnh báo, nó phá hoại!


11

Bạn cũng có thể sử dụng nối mảng :

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

Điều này tạo ra một mảng mới và không sửa đổi bản gốc.


11

Kể từ Ruby 2.5.0, Array vận chuyển với prepend phương thức (chỉ là bí danh cho unshiftphương thức).


1
Điều này cũng hoạt động với ruby ​​2.4.4p296, vì vậy có lẽ chỉ với ruby ​​2.4?
Obromios

9

Bạn có thể sử dụng methodsolverđể tìm các chức năng của Ruby.

Đây là một kịch bản nhỏ,

require 'methodsolver'

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

Chạy bản in này

Found 1 methods
- Array#unshift

Bạn có thể cài đặt phương thức sử dụng

gem install methodsolver

Thật tuyệt, không nghĩ rằng điều này có thể viết LOL
Marko Avlijaš

irb> require 'methodsolver'nguyên nhân LoadError: cannot load such file -- method_sourcetừ ... từ /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
Hãy thử sử dụng prythay vìirb
akuhn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.