記事【Ruby】配列と操作(基本編)にて、Rubyにおける配列の基本的な内容を解説しました。しかし、配列に関係する操作やメソッドは他にも多数あります。

本記事では、基本編で紹介しきれなかった内容をお伝えします。ぜひマスターして、最高に効率的なプログラムを作れるようになってくださいね!

配列をeachで回す

要素を順番に取り出す方法を解説します。配列はeachというメソッドが使えます。他言語経験者にはイテレータといえばわかりやすいでしょうか。これを利用して、要素を取り出しつつ出力してみましょう。

以下が基本書式です。

配列.each do |配列の要素を受ける変数|
    // 配列の要素を使った処理
end

では実際に使ってみましょう。各要素を取り出して表示しつつ、すべての要素が終わると自動的に終了させます。

array = ["a", "b", "c", "d", "e", "f"]
array.each do |value|
    puts value
end

[実行結果]

a
b
c
d
e
f

配列の要素を順番に取り出し、処理(この場合は表示)できました。

Rubyの配列をソートする

配列の中身をソート(大きい順や小さい順など、何らかの規則に基づき並び替える)する方法をいくつか解説します。

sortメソッド

配列を昇順(小さいものから大きいものの順に並べる)に並び替えます。まずはsortメソッドです。

array = [“a”, “b”, “f”, “d”, “e”]
p array.sort

[実行結果]

["a", "b", "d", "e", "f"]

もちろん、数値でも可能です。

array = [5, 2, 4, 3, 9]
p array.sort

[実行結果]

[2, 3, 4, 5, 9]

sortは表示だけソートしますが、破壊的メソッドsort!もあります。

破壊的メソッドとは、【Ruby入門】最初はこれだけ!まずは手を動かしたい人のRuby入門を参照してください。

配列を逆順にするreverse

配列を逆順にする場合は、reverseを使います。

array = [5, 2, 4, 3, 9]
p array.reverse

[実行結果]

[9, 3, 4, 2, 5]

逆順になりました。

values_atで飛び飛びに要素を取って配列を作る

配列の要素数が多くなったとき、要素番号を指定して、新たに配列を作れると便利ですよね。そんな方法を解説します。

values_atを使います。

array = ["a", "b", "f", "d", "e"]
p array.values_at(1,2,4)

[実行結果]

["b", "f", "e"]

指定した要素だけを取り出して、新たに配列を作れました。

不要な要素を削除する

条件を指定して削除

今度は、不要なものだけを消すdelete_ifを解説します。奇数の要素だけを消しましょう。

array = [1,2,3,4,5,6,7,8,9]
array.delete_if{|i| i%2 == 1}
p array

[実行結果]

[2, 4, 6, 8]

条件に合致するもの、つまり「i % 2 == 1」とすることで、奇数の要素を消しました。

先ほどのvalues_atとdelete_ifのどちらを使うか迷いますね。迷ったときは、元の配列の形を変えて良いか?で判断しましょう。delete_ifは元の配列を変えてしまう、いわゆる破壊メソッドです。元の配列をそのままで、別に配列を作りたい場合はvalues_atを使いましょう。

uniqで重複する要素を削除

配列に値を格納していくうちに、重複した値が入ったとしましょう。重複した要素は1つを残してあとは消す、つまり重複した要素をまとめることができたら便利ですよね。そんなときはuniqを使います。

array = [1,2,3,4,3,2,4,5,3,2]
p array.uniq

[実行結果]

[1, 2, 3, 4, 5]

重複した要素がまとめられました。

配列の中に配列(多重配列)

多重配列(二重配列)の基本

配列の中に配列を入れることができます。いわゆる、二重配列です。

例えば、こんな感じです。

array = [
[0,1,2],
[3,4,5],
[6,7,8]
]
p array

[実行結果]

[[0, 1, 2], [3, 4, 5], [6, 7, 8]]

配列の中に配列を入れて、二次元配列ができました。アクセスするのも、普通の配列とあまり変わりません。2つめの配列の、2つ目の要素にアクセスします。

array = [
[0,1,2],
[3,4,5],
[6,7,8]
]
p array[1][1]

[実行結果]

4

要素の番号は0から始まりますので、[1][1]で2つめの配列の2つ目の要素へのアクセスができます。

配列の平坦化 flatten

配列の中に配列が入っている状態で、個々の配列をすべてまとめて1つの配列にすることを平坦化といいます。flattenを使って1つの配列に展開することができます。

先ほどのサンプルをもう一度使い、解説します。

array = [
[0,1,2],
[3,4,5],
[6,7,8]
]
p array.flatten

[実行結果]

[0, 1, 2, 3, 4, 5, 6, 7, 8]

すべて1つの配列に展開できました。flattenには、flatten!という破壊メソッドもあります。用途に応じて使い分けてください。

その他Rubyの配列の面白いメソッド

Rubyの配列に関する面白いメソッドをまとめてみました。Rubyの不思議な世界をごらんください。

配列を繰り返す

配列*整数で、配列を整数回数分繰り返すことができます。

array = [1,2,3,4,5]
array1 = array * 3
p array1

[実行結果]

arrayが3回繰り返された配列ができました。

配列を比較した結果を論理値で受け取る

eql?は、配列の全要素が同じかどうかを判断し、結果を論理値で受け取ることができます。

array1 = [1,2,3,4,5]
array2 = [1,2,3,4,5]

if array1.eql?(array2) do
    print “配列array1とarray2は全く同じです”
end

[実行結果]

配列array1とarray2は全く同じです

2つの配列array1とarray2を比較した結果を、if文の条件式にそのまま入れることができるので便利です。

指定した内容を含むかどうか調べる

配列の中に、指定した内容を含むかどうかを調べるには、includeを使います。

array = ["a", "b", "f", "d", "e"]
p array.include?("a")

[実行結果]

true

配列の要素にaという文字列が含まれるかどうかを調べて、trueを得ることができました。

配列をランダムに並び替える

配列の要素をランダムに並び替えるには、shuffleを使います。randomの使い方として、単に並び替えるだけでは面白くないので、例えば1,2,3,4,5という5つの数値をランダムに組み合わせて1つの数値を作る、という場合を考えましょう。

array = [1,2,3,4,5]
puts array.shuffle.join

[実行結果]

45213

1,2,3,4,5をランダムに並び替えたあと、shuffleで連結することにより1つの文字列に変換することができました。もちろん、実行するたびに結果は異なります。

配列に配列を結合する

2つの配列を結合したいということは多くあります。そんなときは、concatを使います。配列の作り方も工夫しましょう。要素に空白を含まない場合、%w(文字列)で配列を生成できます。

array1 = %w(a b c d e)
array2 = %w(f g h i j)
p array1.concat(array2)

[実行結果]

["a", "b", "c", "d", "e", "f", "g", "h", "i", "j”]

2つの配列を結合できました。

まとめ

本記事では、配列の応用的な使い方を解説しました。配列にまつわる技術はこれでもほんの一部で、実はRubyにはもっとたくさんのメソッドがあります。

興味を持たれた方は、ぜひ探求してみてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。