0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rubyの配列について

Posted at

配列とは複数のデータ(要素)をまとめて格納できるオブジェクトのことです。
配列内のデータは順番に並んでおり添字を指定することでデータを取り出すことができます。
添字とは配列の各要素に割り振られた番号のことです。これは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で要素の個数を返すことができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?