LoginSignup
1
1

More than 5 years have passed since last update.

Rubyの配列の基礎

Last updated at Posted at 2019-02-24

配列要素の追加方法

超基本的なrubyの配列の扱いについて

要素の変更

ruby.rb
#[]で配列をつくる
irb(main):047:0> a = [1,2,3]
=> [1, 2, 3]

#添え字を使って追加する
irb(main):048:0> a[3] = 4
=> 4

irb(main):049:0> a
=> [1, 2, 3, 4]

#<<を使うと最後の要素に追加することができる
irb(main):050:0> a << 5
=> [1, 2, 3, 4, 5]
irb(main):051:0>

#元の大きさより大きな添字を入れると、間のよそはnilになる
irb(main):051:0> a[6] = 7
=> 7
irb(main):052:0> a
=> [1, 2, 3, 4, 5, nil, 7]

#要素を入れ替える
irb(main):053:0> a[5] = 6
=> 6
irb(main):054:0> a
=> [1, 2, 3, 4, 5, 6, 7]

#要素を削除する→delete_at
irb(main):055:0> a.delete_at(0)
=> 1
irb(main):056:0> a
=> [2, 3, 4, 5, 6, 7]

配列の要素を削除する

#配列の要素を削除する

irb(main):072:0> a = [1,2,3,1,2,3]
=> [1, 2, 3, 1, 2, 3]
irb(main):073:0> a.delete(1)
=> 1
irb(main):074:0> a
=> [2, 3, 2, 3]

#delete_ifメソッド
#delete_ifメソッドは配列の要素を順番に取り出し、その要素をブロックに渡す。
#ブロックの戻り値をチェックし、その戻り値が真であればブロックに渡した要素を配列から削除し、偽であれば配列に残したままにする。
a = [1,2,3,1,2,3]

a.delete_if do |n|
  n.odd?
end

puts a
=> [2, 2]

ブロックを{}で各

a = [1,2,3,4]
sum = 0
#do...endの代わりに{}を使う
number.each{|n| sum += n}
sum #=> 10

配列の要素の取得方法

配列[位置,取得する長さ]

a = [1,2,3,4,5]
a[1,3] #=>[2,3,4]

values_atメソッドを使うと取得したい要素の添字を複数指定ができる。

a = [1,2,3,4,5]
a.values_at(0,2,4) #=>[1,3,5]

[配列の長さ-1]を指定すると最後の要素を取得

a = [1,2,3,4,5]
a[a.size-1] #=>5

-1は最後の要素、-2は最後から2番めの要素というふうに指定が可能。

a = [1,2,3,4,5]
a[-1] #=>5
a[-2] #=>4

lastというメソッドを使うと最後を取得できる。
引数に0以上の数字を入れると最後のn個の要素を取得できる

a = [1,2,3,4,5]
a.last #=>5

a.last(2) #=> [4,5]

lastの反対にfirstもある。使い方は全く同じ

a = [1,2,3,4,5]
a.first #=>1

a.first(2) #=>[1,2]

要素の追加

a = []
a.push(1) #=>[1]
a.push(2,3) #=>[1,2,3]
# << でも同じ
a << 4

要素の削除

a = [1,2,3,4,5]
a.delete(2) #=> [1,3,4,5]

配列の連結

配列を連結したい場合はconcatか + を使う。
2つの違いは元の配列を変更するかどうか(破壊するかどうか)
contatを使うと元の配列(メソッドを呼び出した側の配列)が変更される。

a = [1]
b = [2,3]
a.concat(b) #=> [1,2,3]

#aは変更される(破壊的)
#bは変更されない
a #=> [1,2,3]
b #=> [2,3]

+を使うと元の配列を変更せずに、新しい配列を作成する。

a = [1]
b = [2,3]
a + b #=> [1,2,3]

#もちろんaもbも破壊されない。

1
1
1

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
1
1