1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Ruby]配列とハッシュに関して

Last updated at Posted at 2020-04-07

対象読者

プログラミング初学者

配列に関して

配列(array)は複数の値をまとめて管理したいときに使用する。
配列内で管理されるものは”要素(element)”と呼ばれる。

##配列の定義のしかた

#例1
array = Array.new

#例2
fruits = ["apple", "banana"]

##配列に要素を追加する方法

型は以下の通り。

配列.push(追加する要素)

例えば

#空の配列を用意して
array = Array.new

#"A"を追加するには
array.push("A") 
puts array # 出力結果 ["A"]

また、一度に複数の要素を追加したい時は

#先ほどの配列をそのまま適用すると
array.push("B", "C")  
puts array # 出力結果 ["A", "B", "C"]

要素の間に要素を追加(挿入)する方法

型は以下の通り。

配列.insert(挿入位置, 挿入する要素)

例えば

#以下の配列があったとして
array = ["A", "B", "D"]

#"C"を挿入する場合は
array.insert(2, "C")
puts array # 出力結果 ["A", "B", "C", "D"]

また、一度に複数の要素を挿入したい時は、第3引数以降に要素を渡す。

#先ほどの配列をそのまま適用すると
array.insert(2, 1, 2) 
puts array # 出力結果 ["A", "B", 1, 2, "C", "D"] 

##配列内の要素を削除する方法
型は以下の通り。

配列.delete(削除する要素)

例えば

#以下の配列があったとして
array = ["A", "B", 1, 1, 2, "C", "D"] 

#1を削除するには
array.delete(1) 
puts array # 出力結果 ["A", "B", 2, "C", "D"]

()内の引数に渡した要素と一致するものをすべて配列から削除する。

##指定位置の要素を削除する方法
型は以下の通り。

配列.delete_at(削除位置)

例えば

#以下の配列があったとして
array = ["A", "B", 2, "C", "D"]

#2を削除するには
array.delete_at(2)
puts array # 出力結果 ["A", "B", "C", "D"]

指定範囲の要素を削除する方法

型は以下の通り。

配列.slice!(削除開始位置, 削除する長さ)

例えば

#以下の配列があったとして
array = ["A", "B", 1, 1, 2, "C", "D"] 

#1,1,2を削除するには
array.slice!(2, 3) # 出力結果 ["A", "B", "C", "D"]

#または
array.slice!(2..4)

#上記の型は
配列.slice!(削除範囲)

配列の中の要素を取り出す方法

型は以下の通り。

array[要素番号]

例えば

#以下の配列があったとして
array = ["A", "B", "C", "D"]

# "A"を取得するには
puts array[0] # 出力結果 "A" 

ハッシュに関して

キーとバリュー(値)を組み合わせて保持するデータ構造のこと。
配列は一つの要素にオブジェクトが一つ入っていたのに対して、ハッシュはオブジェクトがキーとバリューの二つ入っている。

##ハッシュの定義のしかた

#例1
hash = Hash.new

#例2
user = {user1: "たけし", user2: "たかし"}

要素を追加する方法

型は以下の通り。

ハッシュ[追加したい要素のキー] = 

例えば

#以下の配列があったとして
users = {user1: "たけし", user2: "たかし"}

# キーがuser3、バリューがけんじの要素を追加するには
users[:user3] = "けんじ"
puts users # 出力結果  {:user1=>"たけし", :user2=>"たかし", :user3=>"けんじ"}

そのほかの追加の方法としては、以下があります。

ハッシュ.store(追加したい要素のキー, )

具体例は以下の通り。

#以下の配列があったとして
users = {user1: "たけし", user2: "たかし"}

# キーがuser3、バリューがけんじの要素を追加するには
users.store("user3", "けんじ")
puts users # 出力結果  {:user1=>"たけし", :user2=>"たかし", :user3=>"けんじ"}

要素を削除する方法

型は以下の通り。

ハッシュ.delete(削除したい要素のキー)

例えば

#以下の配列があったとして
users = {:user1=>"たけし", :user2=>"たかし", :user3=>"けんじ"}

# キーがuser3、バリューがけんじの要素を削除するには
users.delete("user3")
puts users # 出力結果  {:user1=>"たけし", :user2=>"たかし"}

値が(キーと一緒に)ハッシュから取り除かれる。

ハッシュの中の特定のバリューを取得する方法

型は以下の通り。

ハッシュオブジェクト[:キー名]

例えば

#以下の配列があったとして
users = {:user1=>"たけし", :user2=>"たかし"}

# "たかし"を取り出す時は
puts users[:user2]

ハッシュの中のバリュー一覧を取得する方法

例えば

#以下の配列があったとして
users = {:user1=>"たけし", :user2=>"たかし"}

puts users.values # 出力結果 たけし, たかし

ハッシュの中のキー一覧を取得する方法

例えば

#以下の配列があったとして
users = {:user1=>"たけし", :user2=>"たかし"}

puts users.keys # 出力結果 [:user1, :user2]

問題

配列の内部に、複数のユーザーの情報をハッシュとして持つ変数user_dataがある。
user_dataを利用して、全てのユーザーの名前だけが出力されるようにRubyでコーディングしてください。

user_data = [
             {user: {profile: {name: 'George'}}},
             {user: {profile: {name: 'Alice'}}},
             {user: {profile: {name: 'Taro'}}}
             ]

## 解答

user_data.each do |u|
  puts u[:user][:profile][:name]
end

#または
user_data.each{ |u| puts u.dig(:user, :profile, :name) }
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?