配列とは複数のデータ(要素)をまとめて格納できるオブジェクトのことです。
配列内のデータは順番に並んでおり添字を指定することでデータを取り出すことができます。
添字とは配列の各要素に割り振られた番号のことです。これは0から始まります。
書き方としては
[データ1,データ2,データ3]
と書きます。
データの取り出し方としては
irb(main):002:0> a = [1,2,3,"aaa"]
=> [1, 2, 3, "aaa"]
まずirbモードにして変数aに配列を定義します。
次に先頭の1を取り出します。
irb(main):004:0> a[0]
=> 1
配列の添字は0から始まるのでa[0]となります。
次に配列aは空であるかを確認する方法としては
irb(main):005:0> a.empty?
=> false
aには要素が入っているのでfalseと返ってきます。
aの中に特定の値が入っているか確認するときは
irb(main):007:0> a.include?('aaa')
=> true
aaaは入っているのでtrueが返ってきます。
irb(main):008:0> a.reverse
=> ["aaa", 3, 2, 1]
irb(main):009:0> a
=> [1, 2, 3, "aaa"]
irb(main):010:0> a.reverse!
=> ["aaa", 3, 2, 1]
irb(main):011:0> a
=> ["aaa", 3, 2, 1]
reverseと打つと配列の要素を逆に返すことはできますが、並び替えられていません。
reverse!と打つことで配列内の要素を逆に並び替えることができます。
irb(main):012:0> a.shuffle
=> [3, 1, "aaa", 2]
shuffleと打つとランダムに順番を並び替えることができます。
配列内に多数の要素を定義したいときは範囲オブジェクトというものがあります。
irb(main):013:0> (0..25).to_a
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
0..25とすることでこの範囲を一気に指定することができます。
irb(main):014:0> aa = (0..99).to_a.shuffle
=> [76, 62, 67, 35, 60, 65, 26, 68, 69, 58, 25, 39, 73, 55, 43, 41, 54,
0, 37, 70, 1, 34, 95, 27, 92, 53, 56, 82, 18, 36, 44, 49, 84, 94, 59,
33, 6, 38, 64, 87, 15, 10, 32, 97, 96, 79, 5, 21, 46, 45, 89, 22, 16,
98, 42, 80, 12, 40, 4, 61, 30, 72, 47, 50, 8, 75, 83, 48, 11, 51, 78,
52, 24, 85, 19, 63, 28, 90, 2, 77, 20, 3, 88, 99, 17, 91, 57, 13, 14,
7, 81, 23, 93, 74, 71, 31, 29, 66, 9, 86]
このようにshuffleも記述すると0から99
までの数字をランダムに配列することができます。
irb(main):015:0> z = (0..10).to_a
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
irb(main):016:0> z << 20
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]
irb(main):017:0> z.push(30)
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30]
配列の末尾に加えたいときはz<<20、またはpushメソッド
z.push(30)と書きます。
配列の要素を削除したいときは
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30]
irb(main):018:0> z.pop
=> 30
irb(main):019:0> z.shift
=> 0
irb(main):020:0> z
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]
z.popで末尾の要素を、z.shiftで先頭の要素を削除します。
重複する要素を削除したいときは
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 3, 6]
irb(main):023:0> z.uniq
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]
irb(main):024:0> z
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 3, 6]
irb(main):025:0> z.uniq!
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]
irb(main):026:0> z
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]
irb(main):027:0>
z.uniqで重複する要素を削除し、完全に配列から削除するときはz.uniq!と書きます。
irb(main):027:0> s = ['my','name','is','nanashi']
=> ["my", "name", "is", "nanashi"]
irb(main):028:0> s.join
=> "mynameisnanashi"
irb(main):029:0> s.join(' ')
=> "my name is nanashi"
irb(main):030:0> s.join(' ')
=> "my_name_is_nanashi"
次に結合の方法です。
s.joinと書くことで書く要素を結合することができます。
s.join(' ')やs.join(' ')とすることで各要素間にスペースなどを入れることができます。
irb(main):031:0> s.sort
=> ["is", "my", "name", "nanashi"]
s.sortで若い順にソートすることができます。
irb(main):032:0> s.size
=> 4
s.sizeで要素の個数を返すことができます。