Changes

Understanding Ruby Arrays

4,349 bytes added, 20:11, 26 November 2007
New page: In Understanding Ruby Variables we looked at storing data (such as numbers, strings and boolean true or false values) in memory locations known as variables. The variable types covered...
In [[Understanding Ruby Variables]] we looked at storing data (such as numbers, strings and boolean true or false values) in memory locations known as variables. The variable types covered in those chapters were useful for storing one value per variable. Often, however, it is necessary to group together multiple variables into a self contained object. This is where the concept of Ruby Arrays comes in. The objective of this chapter, therefore, is to introduce the concept of Arrays in Ruby and provide an overview of the creation and manipulation of such objects.

== What is a JavaScript Array ==

A Ruby array is an object that contains a number of items. Those items can be variables (such as String, Integer, Fixnum Hash etc) or even other objects (including other arrays to make a multidimensional array). Once you have grouped all the items into the array you can then perform tasks like sorting the array items into alphabetical or numerical order, accessing and changing the value assigned to each array item, and passing the group of items as an argument to a Ruby function.

In this chapter we will look in detail at how to create and manipulate JavaScript arrays.

== How to Create a Ruby Array ==

Ruby provides a number of mechanisms for creating an array. Arrays essentially involve the use of the Ruby ''Array'' class. We could, therefore, create an uninitialized array using the ''new'' method of the ''Array'' class:

<pre>
days_of_week = Array.new
</pre>

We now have an array called ''days_of_week'' with nothing in it. In fact, we can verify if an array is empty by calling the ''empty?'' method of the Ruby ''Array'' class which will return ''true'' if the array is empty:

<pre>
days_of_week.empty?
</pre>

We can also initialize an array with a preset number of elements by passing through the array size as an argument to the ''new'' method:

<pre>
days_of_week = Array.new(7)
=> [nil, nil, nil, nil, nil, nil, nil]
</pre>

Note that when we preset the size, all the elements are initialized to ''nil''. Now we need some way of populating an array with elements.

== Populating an Array with Data ==

Having created an array we need to add some data to it. One way to do this is to place the same data in each element during the created process:

<pre>
days_of_week = Array.new(7, "today")
=> ["today", "today", "today", "today", "today", "today", "today"]
</pre>

Another option is to use the [] method of the ''Array'' class to specify the elements one by one:

<pre>
days_of_week = Array[ "Mon", "Tues", "Wed", "Thu", "Fri", "Sat", "Sun" ]
=> ["Mon", "Tues", "Wed", "Thu", "Fri", "Sat", "Sun"]
</pre>

This can also be abbreviated to just the array name and the square brackets:

days_of_week = [ "Mon", "Tues", "Wed", "Thu", "Fri", "Sat", "Sun" ]

This will not only create the array for us, but also populate it with the element data.

== Finding Out Information About a Ruby Array ==

Once an array exists, it can be useful to find out information about that array and its elements. As we mentioned earlier, it is possible to find out if an array is empty or not:

<pre>
days_of_week.empty?
=> true
</pre>

We can also find out the size of an array using the ''size'' method of the Array class:

<pre>
days_of_week = Array.new(7)
days_of_week.size
=> 7
</pre>

We can also find out what type of object is contained in array by using the ''array index'' value of the element we want to interrogate combined with the ''class'' method:

<pre>
days_of_week = [ "Mon", 15, "Wed", 16, "Thu", 17 ]

days_of_week[0].class
=> String

days_of_week[1].class
=> Fixnum
</pre>

== Accessing Array Elements ==

The elements of an array can be accessed by referencing the index of the element in question in conjunction with the [] method. Note that indexing starts at 0 and not one. To access the first and second elements of our array therefore:

<pre>
days_of_week[0]
=> "Mon"

days_of_week[1]
=> "Tues"
</pre>

The Array class ''at'' method can be used to similar effect:

<pre>
days_of_week.at(0)
=> "Mon"
</pre>

The last element of an array may be accessed by specifying an array index of -1. For example:

<pre>
days_of_week[-1]
=> "Sun"
</pre>

The first and last elements may be accessed by using the ''first'' and ''last'' methods of the Array class:

<pre>
days_of_week.first
=> "Mon"

days_of_week.last
=> "Sun"
</pre>