はじめに
Rubyの配列について、やりたいことから逆引きできるようにまとめてみました!
配列とは
配列とは、複数の値をまとめて格納できるオブジェクトのこと
fruits = ['りんご','みかん','ばなな'] #複数の値を一つまとめて変数として格納できる
上記の'りんご'や'みかん'など、配列内の各値を要素と呼ぶ
要素を設定したい場合
<記述方法>
変数 = [値1,値2,...]
a = [1,2,3] #数値
b = ['a','b','c'] #文字列
c = ['a',1,0.5] #=> 異なる種類の型も可能
要素の取得関連
指定した位置の要素を取得したい場合
<記述方法>
配列[位置]
a = [1,2,3]
puts a[0] #=> 1
puts a[1] #=> 2
puts a[2] #=> 3
最後の要素を取得したい場合
<記述方法>
- 配列[-1]
- 配列.last
a = [1,2,3]
puts a[-1] #=> 3
puts a.last #=> 3
最初の要素を取得したい場合
<記述方法>
- 配列[0]
- 配列.first
a = [1,2,3]
puts a[0] #=> 1
puts a.first #=> 1
n番目からm個分の要素を取得したい場合
<記述方法>
配列[位置,個数]
a = [1,2,3,4,5,6,7,8]
p a[2,4] #=>[3, 4, 5, 6]
要素を変更したい場合
<記述方法>
配列[index] = 変更する値
a = [1,2,3]
a[0] = "1"
a[1] = "りんご"
a[2] = 0
p a #=> ["1", "りんご", 0]
要素の追加関連
要素を追加したい場合
<記述方法>
[] << 追加する値
a = []
a << 1
a << 2
a << 3
p a #=> [1, 2, 3]
複数の値をまとめて配列に追加したい場合
<記述方法>
配列.push(値1,値2,...)
a = [1,2,3,4,5,6,7,8]
a.push(9,10,11)
p a #=>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
要素の削除関連
指定した値を削除したい場合
<記述方法>
配列.delete(削除する値)
a = [1,2,3,1]
a.delete(1)
p a #=>[2, 3]
指定した位置の要素を削除したい場合
<記述方法>
配列.delete_at(位置)
a = [1,2,3,1]
a.delete_at(0)
p a #=>[2, 3, 1]
初期化関連
配列を初期化したい場合
<記述方法>
- 変数 = []
- 変数 = Array.new
a = []
b = Array.new
p a #=>#[]
p b #=>#[]
〜個の要素を持つ配列を初期化したい場合
<記述方法>
変数 = Array.new(要素数)
a = Array.new(5)
p a #=>#[nil, nil, nl, nil, nil]
a = Array.new(5,0)
p a #=> [0, 0, 0, 0, 0]
配列を変数に分けて格納したい場合
<記述方法>
変数1,変数2,変数3 = 配列
a = [1,2,3]
b,c,d = a
puts b,c,d
#=> 1
# 2
# 3
配列を変数に分けて格納したい場合(余りがでる場合)
<記述方法>
変数1,変数2,*変数3 = 配列
a = [1,2,3,4,5]
b,c,d,*e = a
p b,c,d,e
#=> 1
# 2
# 3
# [4, 5]
連結関連
配列を連結させたい場合
<記述方法>
配列a + 配列b
a = [1,2,3]
b = [3,4,5]
p a + b #=>[1, 2, 3, 3, 4, 5]
配列aに配列bを連結させたい場合
<記述方法>
配列a.concat(配列b)
a = [1,2,3]
b = [3,4,5]
a.concat(b)
p a #=> [1, 2, 3, 3, 4, 5]
#集合関連
配列aと配列bの重複値を排除した配列cを生成する場合
<記述方法>
配列a | 配列b
a = [1,2,3]
b = [3,4,5]
c = a | b
p c #=> [1, 2, 3, 4, 5]
配列aと配列bに共通する値を格納した配列cを生成する場合
<記述方法>
配列a & 配列b
a = [1,2,3]
b = [3,4,5]
c = a & b
p c #=> [3]
配列aから配列bの値を排除した配列cを生成する場合
<記述方法>
配列a - 配列b
a = [1,2,3]
b = [3,4,5]
c = a - b
p c #=> [3]
配列展開関連
配列を展開して、複数の引数として使用する場合
<記述方法>
*配列
a = [1,2,3,4,5]
p a
#=>[1, 2, 3, 4, 5]
p *a
#=>1
# 2
# 3
# 4
# 5
引数の数が可変なメソッドを定義する場合
<記述方法>
def a(*引数)
end
def a(val1,val2,*val3)
p val1
p val2
p val3
end
a(1,2,3,4,5,6)
#=>1
# 2
# [3, 4, 5, 6]
文字列⇨配列関連
文字列を値に持つ配列を簡潔に書く方法
<記述方法>
%w(文字列1 文字列2 文字列3)
<結果>
["文字列1","文字列2","文字列3"]
a = ["a","b","c"]
b = %w(a b c)
p a #=>["a", "b", "c"]
p b #=>["a", "b", "c"]
文字列を値に持つ配列を簡潔に書く方法
<記述方法>
%w(文字列1 文字列2 文字列3)
<結果>
["文字列1","文字列2","文字列3"]
a = ["a","b","c"]
b = %w(a b c)
p a #=>["a", "b", "c"]
p b #=>["a", "b", "c"]
文字列を一文字ずつ分割して配列にする場合
<記述方法>
'abcde'.chars
<結果>
["a", "b", "c", "d", "e"]
a = 'abcde'.chars
p a #=>["a", "b", "c", "d", "e"]
文字列を一文字ずつ分割して配列にする場合
<記述方法>
'abcde'.chars
<結果>
["a", "b", "c", "d", "e"]
a = 'abcde'.chars
p a #=>["a", "b", "c", "d", "e"]
文字列を指定の区切り文字毎に分割して配列にする場合
<記述方法>
'abcde'.split(区切り文字)
<結果>
["a", "b", "c", "d", "e"]
a = 'a,b,c,d,e'.split(',')
p a #=>["a", "b", "c", "d", "e"]
``