LoginSignup
0
0

More than 3 years have passed since last update.

【初心者向】配列とハッシュ取り出し方、活用の仕方

Last updated at Posted at 2019-11-30

Railsを何人かに教えていて、配列の取り出し方が怪しいのではないかと思えたので
勉強会資料として書きます。

配列というのはデータを複数入れることができるものです。
例えば@basic1 = [1, 2, 4, 8, 16, 32]
この時、複数入った中身を取り出すには

number = @basic1[0]
のように書く。

[0]というのがインデックス番号になって、0番目から始まります
今回の場合なら
0番目が1、1番目が2、2番目が4、3番目が8、4番目が16、5番目が32
となります。

ビューに表示するときは例えば

<h1>基本1</h1>
<div>
<h2>basic1</h2>
  <% @basic1.each do |b| %>
    <%= b %><br>
  <% end %>
</div>

/sample-blog/app/controllers/users_controller.rb
  def basic1
    @basic1 = [1, 2, 4, 8, 16, 32]
  end

image.png

同じパターンで

/sample-blog/app/controllers/users_controller.rb
  def basic1
    @basic2 = ["aaa", "bbb", "ccc", "ddd"]
  end
<h2>basic2</h2>
<div>
  <% @basic2.each do |b| %>
    <%= b %><br>
  <% end %>
</div>

image.png

配列の中に配列

少し複雑な場合

image.png

def basic1
    @basic3 = [[1, 2, 3],[3, 4, 5]]
end
<h2>basic3</h2>
<div>
  <% @basic3.each do |basic| %>
    <p><%= basic %></p>
  <% end %>
</div>

繰り返し1回目はindexが1繰り返し2回目はインデックスが1
indexが0のところは[1, 2, 3] 1のところは[3, 4, 5]

今度は全部表示させたい(取り出したい)場合

image.png

<h2>basic3-2</h2>
<div>
  <% @basic3.each do |basic| %>
    <% basic.each do |b| %>
      <%= b %><br>
    <% end %>
  <% end %>
</div>

eachの繰り返しの中にeachがあります。
1回目のループでbasic = [1, 2, 3]が取り出されるのでこれをさらにループにかけると1 2 3
2回目のループでbasic = [3, 4, 5]が取り出されるのでこれをさらにループにかけると3 4 5
と中身を取り出すことができます。

配列の中にハッシュ

@basic5 = [
      {name: "佐藤", mail: "satho@gmail.com"},
      {name: "田中", mail: "tanaka@yahoo.co.jp"}
    ]

一つ目の要素が{name: "佐藤", mail: "satho@gmail.com"}
二つ目の要素が{name: "田中", mail: "tanaka@yahoo.co.jp"}

以下のように取り出すことができます。

<h2>basic5-1</h2>
<div>
  <% @basic5.each do |b| %>
    <p><%= b[:name] %></p>
    <p><%= b[:mail] %></p>
  <% end %>
</div>

<h2>basic5-2</h2>
<div>
    <p><%= @basic5[0][:name] %></p>
    <p><%= @basic5[1][:mail] %></p>
</div>

image.png

こんな感じで取り出すことができます。

0
0
0

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