 
 Bài viết dựa trên nguồn ruby-doc.org và một số ví dụ mình sưu tầm được. Hi vọng sẽ giúp đỡ được mình và mọi người trên con đường làm chủ Ruby.
Array (mảng)
-  Array là kiểu dữ liệu được sắp xếp, đánh chỉ mục số nguyên (chỉ số) của bất kì đối tượng nào 
-  Array có chỉ số bắt đầu từ 0, tương tự như C hoặc Java. Một chỉ số âm được coi là có liên quan đến cuối của mảng là chỉ só -1chỉ ra phần tử cuối cùng của mảng,-2là phần tử tiếp theo cuối cùng trong mảng, và cứ thế tiếp tục-3, ..
Tạo mới Arrays
- Một mảng mới có thể được tạo bằng cách sử dụng kí tự khởi tạo: []. Như ví dụ dưới, mảng được tạo bao gồm kiểu dữ liệuInteger,StringvàFloat:
arr = [1, "two", 3.0] #=> [1, "two", 3.0]
- Một array có thể được tạo bằng cách gọi rõ ràng lệnh ::newvới không, một (khởi tạo độ dài của mảng) hoặc hai phần tử (khởi tạo độ dài và giá trị mặc định của đối tượng)
arr = Array.new     #=> []
Array.new(3)        #=> [nil, nil, nil]
Array.new(3, true)  #=> [true, true, true]
-  Chú ý rằng phần thử thứ hai điền vào mảng với các tham chiếu tới cùng một đối tượng. Do đó, cách này nên dùng trong các trường hợp bạn cần khởi tạo các mảng với các đối tượng bất biến như là Symbols,numbers,truehoặcfalse
-  Để taọ một mảng với các đối tượng riêng biệt, chúng ta có thể sử dụng block. Phương pháp này an toàn khi sử dụng với các đối tượng có thể thay đoỏi, chẳng hạn như hashes,stringshoặcarrays.
Array.new(4) { Hash.new }   #=> [{}, {}, {}, {}]
- Một cách nhanh để tạo các mảng đa chiều:
empty_table - Array.new(3) { Array.new(3) }
#=> [[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]
- Một array có thể tạo bằng cách sử dụng phương thức Array(), cung cấp bởi Kernel, nơi mà chúng sẽ được gọito_arysau đóto_atrong mỗi phần tử của chúng:
Array({:a => "a"}, :b => "b")   #=> [[:a, "a"], [:b, "b"]]
Truy cập các phần tử
- Các phần tử trong array cso thể được lấy bằng cách sử dụng phương thức []. Nó có thể lấy thông qua chỉ số một giá trị duy nhất, cũng có thể lấy một phần trong khoảng (chỉ số bắt đầu và độ dài).
- Các chỉ số âm bắt đầu từ cuối, với -1là phần tử cuối cùng.
arr = [1, 2, 3, 4, 5, 6]
arr[2]      #=> 3
arr[100]    #=> nil
arr[-3]     #=> 4
arr[2, 3]   #=> [3, 4, 5]
arr[1..4]   #=> [2, 3, 4, 5]
arr[1..-3]  #=> [2, 3, 4]
- Một cách khác để truy cập một phần tử cụ thể của mảng là sử dụng phương thức at.
arr.at(0)   #=> 1
**Để hiển thị ra lỗi cho trường hợp chỉ số nhập vào vượt ra bên ngoài của mảng hoặc đặt giá trị mặc định khi điều đó xảy ra, chúng ta sử dụng fetch **
arr = ['a', 'b', 'c', 'd', 'e', 'f']
arr.fetch(100) #=> IndexError: index 100 outside of array bounds: -6...6
arr.fetch(100, "oops") #=> "oops"
arr.fetch(100, 'g') #=> "g"
- Phương thức firstvàlastsẽ trả về giá trị đầu tiên và cuối cùng của mảng tương ứng
arr.first #=> 1
arr.last  #=> 6
- Để trả về nphần tử của mảng, sử dụngtake.
arr.take(3) #=> [1, 2, 3]
- dropthực hiện ngược lại với- take, nó sẽ trả lại mảng với- nphần tử đã bị hủy
Lấy thông tin của một Array
- Arrays luôn theo dõi độ dài của chúng. Để truy vấn một mảng về số lượng phần tử mà nó chứa, sử dụng length,counthoặcsize.
browsers = ['Chrome', 'Firefox', 'Safari', 'Opera', 'IE']
browsers.length #=> 5
browsers.count #=> 5
browsers.size #=> 5
- Để kiểm mảng có chứa bất kì một phần tử nào không chúng ta sử dụng empty?
browsers.empty?   #=> false
- Để kiểm tra một phần tử có nằm trong array ta sử dụng hàm include?:browsers.include?('Konqueror') #=> false
Thêm phần tử vào mảng
- Các phần tử có thể được thêm vào cuối mảng bàng cách sử dụng pushhoặc<<
arr = [1, 2, 3, 4]
arr.push(5) #=> [1, 2, 3, 4, 5]
arr << 6    #=> [1, 2, 3, 4, 5, 6]
- unshiftsẽ thêm phần tử mới vào đầu mảng.
arr.unshift(0) #=> [0, 1, 2, 3, 4, 5, 6]
- Với insertbạn có thể thêm phần tử vào array với vị trí chỉ định
arr.insert(3, 'apple')  #=> [0, 1, 2, 'apple', 3, 4, 5, 6]
- Khi sử dụng insertchúng ta có thể thêm nhiều phần tử cùng 1 lúc trong 1 lần.
arr.insert(3, 'orange', 'pear', 'grapefruit')
#=> [0, 1, 2, "orange", "pear", "grapefruit", "apple", 3, 4, 5, 6]
Xóa phần tử khỏi mảng
- Phương thức popxóa phần tử cuối cùng khỏi mảng và trả về mảng đó.
arr =  [1, 2, 3, 4, 5, 6]
arr.pop #=> 6
arr #=> [1, 2, 3, 4, 5]
- Để truy xuất đồng thời xóa phần tử đầu tiên, sử dụng shift
arr.shift #=> 1
arr #=> [2, 3, 4, 5]
- XÓa một phần tử tại vị trí xác định:
arr.delete_at(2) #=> 4
arr #=> [2, 3, 5]
- Xóa một phần tử tại bất kì vị trí nào trong mảng, sử dụng delete:
arr = [1,2,2,3,2]
arr.delete(2) #=> 2
arr           #=> [1, 3]
- Sử dụng compactvàcompact!để xóa giá trịniltrong mảng:
arr = ['foo', 0, nil, 'bar', 7, 'baz', nil]
arr.compact  #=> ['foo', 0, 'bar', 7, 'baz']
arr          #=> ['foo', 0, nil, 'bar', 7, 'baz', nil]
arr.compact! #=> ['foo', 0, 'bar', 7, 'baz']
arr          #=> ['foo', 0, 'bar', 7, 'baz']
- Để xóa các phần tử trùng lặp trong mảng, sử dụng uniqvàuniq!
arr = [2, 5, 6, 556, 6, 6, 8, 9, 0, 123, 556]
arr.uniq #=> [2, 5, 6, 556, 8, 9, 0, 123]
arr      #=> [2, 5, 6, 556, 6, 6, 8, 9, 0, 123, 556]
arr.uniq! #=> [2, 5, 6, 556, 8, 9, 0, 123]
arr      #=> [2, 5, 6, 556, 8, 9, 0, 123]
Lặp mảng
- Tương tự các lớp khác bao gồm module Enumerable, Array có một phương thứceach, định nghĩa các phần tử nào sẽ được lặp và làm thế nào. Trong trường hợpeachcủa Array, tất cả các phần tử trong đối tượng Array đều được đưa vào khối theo trình tự.
- Lưu ý rằng thao tác này không làm thay đổi giá trị của mảng.
arr = [1, 2, 3, 4, 5]
arr.each { |a| print a -= 10, " " }
# prints: -9 -8 -7 -6 -5
#=> [1, 2, 3, 4, 5]
- Một phương thức lặp đôi khi cũng hữu ích là
