Ruby 配列の仕組みと使い方のサンプル

Rubyの配列の仕組みと使い方のサンプルです。

仕組み 配列とは
作成/確認 配列を宣言して値をセット / 配列に初期値をセット / instance_of?
値を取得 for文 / eachメソッド / length / count
追加/変更 push / << / insert / 配列の値を変更
削除 delete / 全ての要素を削除
並び替え sort / reverse
連結/コピー join / concat
二次元配列 二次元配列を作成 /入れ子の構造の配列

配列とは

a = [ 値1 , 値2 , 値3 ];

上記は複数の値を変数aに代入しています。
この変数aは配列として複数の値を持ちます。

配列の図

  • 1つの変数で複数の値を保持できます。
  • 各項目を要素(element)といいます。
  • 要素の位置をインデックス(添字)で管理します。上記図では[0]、[1]、[2]、[3]です。
  • インデックスは0から始まります。
  • Rubyの配列は、要素ごとにデータ型が異なっていても格納可能です。
    →例:配列の値として文字列型、数値型、論理型をセットする。
  • Rubyの配列は可変長です。要素の追加や削除は可能です。

配列を宣言して値をセット

a = []
a[0] = "赤"
a[1] = "黄"
puts a[0]  # 赤
puts a[1]  # 黄

1行目で空の配列を作成し、2,3行目で値をセットしています。

配列を宣言して値をセット

a = ["赤", "黄", "青"]
puts a[0]  # 赤
puts a[1]  # 黄
puts a[2]  # 青

1行目は、リテラルで配列を作成しています。リテラルとはコード中に記述された値です。

instance_of? 配列か確認する

a = ["赤", "黄", "青"]
puts a.instance_of?(Array)  # true

b = "あいう"
puts b.instance_of?(Array)  # false

instance_of?(Array)は、対象が配列のときはtrue、そうでない場合はfalseを返します。


for文 配列の値を取得する

color = ["赤", "黄", "青"]

for c1 in color
  puts c1 # 赤 黄 青が出力される
end

for i in 0..color.length - 1
  puts color[i] # 赤 黄 青が出力される
end

 

eachメソッド 配列の値を取得する

color = ["赤", "黄", "青"]

color.each do |c1|
  puts c1 # 赤 黄 青が出力される
end

 

length 要素数を返す

color = ["赤", "黄", "青"]
puts color.length # 3が出力される

 

count 引数に一致する要素数を返す

color = ["赤", "黄", "赤"]
puts color.count("赤") # 2が出力される

 


push 配列の末尾に要素を追加

color = ["赤", "黄", "青"]
color.push("白")
puts color # 赤 黄 青 白

 

<< 配列の末尾に要素を追加

color = ["赤", "黄", "青"]
color << "白"
puts color # 赤 黄 青 白

 

insert 任意の位置に要素を追加

1つめの引数の位置に2つめの値を追加します。最初の文字の位置は0です。

color = ["赤", "黄", "青"]
color.insert(2, "白")
puts color # 赤 黄 白 青

 

配列の値を変更する

インデックス(添字)で変更したい要素を指定して値を代入します。

color = ["赤", "黄", "青"]
color[1] = "オレンジ"
puts color # 赤 オレンジ 青

 


delete 指定の要素を削除

color = ["赤", "黄", "青"]
color.delete("黄")
puts color # 赤 青

 

全ての要素を削除

空の配列を代入すると全ての要素を削除します。

color = ["赤", "黄", "青"]
color = []
puts color # 出力なし

 


sort 昇順にソート

a = ["い", "あ", "う"]
b = a.sort
puts b # あ い う

 

reverse 逆順にする

a = ["い", "あ", "う"]
b = a.reverse
puts b # う あ い

 


join 引数の区切り文字で連結して新しい文字列を返す

a = ["あ", "い", "う"]
b = a.join(",")
puts b # あ,い,う

 

concat 配列を連結して新しい配列を返す

a = ["あ", "い", "う"]
b = ["A", "B", "C"]
c = a.concat(b)
puts c # あ い う A B C

 


二次元配列を作成

a =
  ["あ", "い", "う"],
  ["A", "B", "C"]
puts a[0][0] # あ
puts a[0][1] # い
puts a[0][2] # う
puts a[1][0] # A
puts a[1][1] # B
puts a[1][2] # C

 

入れ子の構造の配列

a =
  "文字",
  ["あ", "い", "う"],
  ["A", "B", "C"]
puts a[0] # 文字
puts a[1] # あ い う
puts a[2] # A B C
puts a[1][0] # あ
puts a[1][1] # い
puts a[1][2] # う

関連の記事

Ruby for文 処理を繰り返す(break/continue)

△上に戻る