【Ruby入門】配列と操作(応用編)
  • facebookページ
  • twitterページ
  • 2017.10.05

    【Ruby入門】配列と操作(応用編)

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

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

    配列をeachで回す

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

    以下が基本書式です。

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

    [実行結果]

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

    Rubyの配列をソートする

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

    sortメソッド

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

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

    [実行結果]

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

    [実行結果]

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

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

    配列を逆順にするreverse

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

    [実行結果]

    逆順になりました。

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

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

    values_atを使います。

    [実行結果]

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

    不要な要素を削除する

    条件を指定して削除

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

    [実行結果]

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

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

    uniqで重複する要素を削除

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

    [実行結果]

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

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

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

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

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

    [実行結果]

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

    [実行結果]

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

    配列の平坦化 flatten

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

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

    [実行結果]

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

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

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

    配列を繰り返す

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

    [実行結果]

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

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

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

    [実行結果]

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

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

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

    [実行結果]

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

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

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

    [実行結果]

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

    配列に配列を結合する

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

    [実行結果]

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

    まとめ

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

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


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料10万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテキャンバナー ポテキャリバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE