配列の要素を取得する

配列オブジェクトからインデックスを指定して特定の要素を取得することができます。ここでは Ruby で配列オブジェクトから要素を取得する方法について解説します。

(Last modified: )

要素を取得する

配列に含まれる要素を取得するには次のように行います。

変数 = Arrayオブジェクト[index]

インデックスで指定した要素を取得します。

開始インデックスと終了インデックスを指定して新しい配列を作成する

指定した開始インデックスと終了インデックスまでの要素を新しい配列として取得するには次の構文を使います。

新しいArrayオブジェクト = Arrayオブジェクト[start..end]

「start」に指定したインデックスから「end」に指定したインデックスまでの要素で新しい配列を作成します。次の例をみてください。

ary = ["東京", "大阪", "名古屋", "福岡", "札幌"]
newary = ary[1..3]

開始インデックスに 1 、終了インデックスに 3 を指定して対象の範囲の要素を新しい配列として取得します。新しい配列には「大阪」「名古屋」「福岡」の 3 つの要素が含まれます。

サンプルコード

次の例を試して下さい。

# encoding: UTF-8

ary = ["東京", "大阪", "名古屋", "福岡", "札幌"]

newary = ary[1..3]

puts("元の配列:")
ary.each do |youso|
  puts(youso)
end

puts("新しい配列:")
newary.each do |youso|
  puts(youso)
end

実行結果は次のようになります。

開始インデックスと終了インデックスを指定して新しい配列を作成する

開始インデックスと要素数を指定して新しい配列を作成する

指定した開始インデックスと要素数を指定して新しい配列として取得するには次の構文を使います。

新しいArrayオブジェクト = Arrayオブジェクト[start, len]

「start」に指定したインデックスから「len」に指定した要素数分だけの要素で新しい配列を作成します。

ary = ["東京", "大阪", "名古屋", "福岡", "札幌"]
newary = ary[1, 2]

開始インデックスとして 1 、要素数として 2 を指定して対象の範囲の要素を新しい配列として取得します。新しい配列には「大阪」「名古屋」の 2 つの要素が含まれます。

サンプルコード

実際に試してみます。

# encoding: UTF-8

ary = ["東京", "大阪", "名古屋", "福岡", "札幌"]

newary = ary[1, 2]

puts("元の配列:")
ary.each do |youso|
  puts(youso)
end

puts("新しい配列:")
newary.each do |youso|
  puts(youso)
end

実行結果は次のようになります。

複数の要素から新しい配列を作成する

開始インデックスと要素数を指定して新しい配列を作成する

配列の要素を取り出す場合は通常は今までに説明した方式を使いますが、同じ結果を得ることが出来るメソッドも Array クラスに用意されています。

1 つの要素を取得するには Array クラスで用意されている at メソッドを使います。

変数 = Arrayオブジェクト.at(index)

これは次の場合と同等です。

変数 = Arrayオブジェクト[index]

次に開始インデックスと終了インデックスを指定して新しい配列を取得するには Array クラスで用意されている slice メソッドを使います。

新しい配列 = Arrayオブジェクト.slice(start..end)

これは次の場合と同等です。

新しい配列 = Arrayオブジェクト[start..end]

最後に開始インデックスと要素数を指定して新しい配列を取得するには Array クラスで用意されている slice メソッドを使います。

新しい配列 = Arrayオブジェクト.slice(start, len)

これは次の場合と同等です。

新しい配列 = Arrayオブジェクト[start, len]

-- --

Ruby で配列オブジェクトから要素を取得する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。