Ruby Language

Multidimensional Arrays

Introduction#

Multidimensional Arrays in Ruby are just arrays whose elements are other arrays.

The only catch is that since Ruby arrays can contain elements of mixed types, you must be confident that the array that you are manipulating is effectively composed of other arrays and not, for example, arrays and strings.

Initializing a 2D array

Let’s first recap how to initialize a 1D ruby array of integers:

my_array = [1, 1, 2, 3, 5, 8, 13]

Being a 2D array simply an array of arrays, you can initialize it like this:

my_array = [
  [1, 1, 2, 3, 5, 8, 13],
  [1, 4, 9, 16, 25, 36, 49, 64, 81],
  [2, 3, 5, 7, 11, 13, 17]
]

## Initializing a 3D array
You can go a level further down and add a third layer of arrays. The rules don't change:

my_array = [ [ [1, 1, 2, 3, 5, 8, 13], [1, 4, 9, 16, 25, 36, 49, 64, 81], [2, 3, 5, 7, 11, 13, 17] ], [ [‘a’, ‘b’, ‘c’, ‘d’, ‘e’], [‘z’, ‘y’, ‘x’, ‘w’, ‘v’] ], [ [] ] ]


## Accessing a nested array
Accessing the 3rd element of the first subarray:

    my_array[1][2]

## Array flattening
Given a multidimensional array:

my_array = [[1, 2], [‘a’, ‘b’]]


the operation of flattening is to decompose all array children into the root array:

my_array.flatten

[1, 2, ‘a’, ‘b’]


This modified text is an extract of the original Stack Overflow Documentation created by the contributors and released under CC BY-SA 3.0 This website is not affiliated with Stack Overflow