Arrays in Ruby
Ruby arrays are ordered collections of objects. They can hold objects like integer, number, hash, string, symbol or any other array.
An array is a list of values, objects, enclosed in square brackets and separated by commas.
Each element in an array is referred to by an index which starts at 0 like in C.
A negative index is assumed to be relative to the end of the array i.e., -1
indicates the last element of the array, -2
is the 2nd last element and so on.
Creating Arrays
The two common ways to create arrays are:
-
Using square brackets
fruits = ['mango', 'banana', 'apple'] # output: fruits array with three fruits name
-
Using
Array.new
numbers = Array.new(3, 0) # output: numbers array with 3 elements initialized to 0 puts numbers # [0, 0, 0] languages = Array.new(5, 'ruby') puts languages # ['ruby', 'ruby', 'ruby', 'ruby', 'ruby]
This approach is quite useful in creating an array with some default values.
Accessing element in Array
You can access an element of an array by using its index value.
fruits = ['mango', 'banana', 'apple']
puts fruits[0] # output: 'mango'
Accessing multiple elements
One can access multiple elements as well. It can be achieved by passing two indices.
languages = ['C', 'Ruby', 'Python', 'Go']
high_level = languages[1, 3]
puts high_level # ["Ruby", "Python", "Go"]
Ruby doesn't throw an error if the user tries to access an element that doesn’t exist.
Instead, it returns nil .
|
Adding an element to an Array
If you want to add a new element to Array, you can achieve that through the following methods.
-
push
method:languages = ['C', 'Ruby', 'Python', 'Go'] languages.push('JavaScript') puts languages # ['C', 'Ruby', 'Python', 'Go', 'JavaScript']
-
Using the
<<
operator:languages = ['C', 'Ruby', 'Python', 'Go'] languages << 'JavaScript' puts languages # ['C', 'Ruby', 'Python', 'Go', 'JavaScript']
-
If you want to add to the beginning, use the
unshift
method:languages = ['C', 'Ruby', 'Python', 'Go'] languages.unshift('JavaScript') puts languages # ['JavaScript', 'C', 'Ruby', 'Python', 'Go']
unshift has an alias called prepend as well.
Use the one that makes sense to you.
|
Removing an element from an Array
Similar to addition, Ruby provide many methods to remove element from an Array. Following are a few methods:
-
delete
method: It will delete the occurrences of the specified element from array.languages = ['C', 'Ruby', 'Python', 'Go', 'C'] languages.delete('C') puts languages # ['Ruby', 'Python', 'Go']
-
delete_at
method: Delete the element at the specified index.languages = ['C', 'Ruby', 'Python', 'Go'] languages.delete_at(2) puts languages # ['C', 'Ruby', 'Go']
-
pop
method: It is used to remove the element from end of the array.languages = ['C', 'Ruby', 'Python', 'Go'] languages.pop puts languages # ['C', 'Ruby', 'Python']
-
shift
method: Removes the first element from the array.languages = ['C', 'Ruby', 'Python', 'Go'] languages.shift puts languages # ['Ruby', 'Python', 'Go']
Iterating over an Array
There are many ways we can iterate over an Array.
-
each
method is the most common way to iterator over an Array.languages = ['C', 'Ruby', 'Python', 'Go'] languages.each do |language| puts "#{language} is nice." end # output C is nice. Ruby is nice. Python is nice. Go is nice.
NOTE: Method
each_index
will only give index instead of element. -
each_with_index
method provides you an index along with element while iterating over Array.languages = ['C', 'Ruby', 'Python', 'Go'] languages.each_with_index do |language, i| puts "#{i + 1}. #{language} is nice." end # output 1. C is nice. 2. Ruby is nice. 3. Python is nice. 4. Go is nice.
Comparing Arrays
You can compare two arrays for equality using the ==
operator.
language1 = ['C', 'Ruby', 'Python', 'Go']
language2 = ['C', 'Ruby', 'Python', 'Go']
puts language1 == language2 # true
language2.delete('C')
puts language1 == language2 # false
Common Array methods
include?
This method checks whether the argument given is included in the array or not.
languages = ['C', 'Ruby', 'Python', 'Go']
puts languages.include?('Ruby') # true
sort
This method sorts the Array elements.
languages = ['C', 'Ruby', 'Python', 'Go']
puts languages.sort # ["C", "Go", "Python", "Ruby"]
sort!
This method sorts the Array elements in place. Notice the !
to indicate “dangerous”.
languages = ['C', 'Ruby', 'Python', 'Go']
languages.sort!
puts languages # ["C", "Go", "Python", "Ruby"]
concat
This method will concat another method with the existing one.
languages = ['C', 'Ruby', 'Python', 'Go']
updated = languages.concat(['Rust', 'Dart'])
puts updated # ["C", "Ruby", "Python", "Go", "Rust", "Dart"]
NOTE: You can see all Array methods in their official documentation here. Go through it and familiarize yourself. There are many handy methods available.
Help me to improve Dhanu Sir.