概要
eachメソッドで使える便利なものをまとめました。
配列のメソッドがほとんどなのでそっち調べたほうが早いかも。
起点、回数の指定
first(n)
- 先頭からn個の要素分まで実行する(回数指定)
num = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 先頭から3回まで
num.first(3).each do |num|
puts num
end
# result
1
2
3
last(n)
- 末尾n個の要素分、実行する(起点指定)
alphabet = ["A", "B", "C", "D", "E",]
# 末尾3回分まで
alphabet.last(3).each do |num|
puts num
end
# result
"C"
"D"
"E"
list[n1..n2]
- n1個目からn2個目分まで実行する(回数・起点指定)
list = ["くま", "とら", "うさぎ", "かめ", "たこ", "ひと"]
# 要素2(うさぎ)から要素4(たこ)まで
list[2..4].each do |num|
puts num
end
# result
"うさぎ"
"かめ"
"たこ"
# .silce(n1..n2)でも可能
list.slice(2..4).each do |num|
puts num
end
# result
"うさぎ"
"かめ"
"たこ"
配列を操作
list.uniq
- 重複したものを無視する
num = [1, 1, 2, 2, 2, 3]
# 重複したものは無視する
num.uniq.each do |num|
puts num
end
# result
1
2
3
list.push(n)
- 末尾にnを追加して実行
list.unshift(n)
- 先頭にnを追加して実行
num = [1, 2, 3]
# 先頭に要素を追加
num.push("Ruby").each do |num|
puts num
end
# result
"Ruby"
1
2
3
# 末尾に要素を追加
num.unshift(81).each do |num|
puts num
end
# result
1
2
3
81
インデックス番号の使用
each_with_index
- インデックス番号を扱うことができる
name = ["田所", "木村", "平野"]
# 第一引数が要素、第二引数がインデックス番号
name.each_with_index do |name, num|
puts "#{num}番目は#{name}さんです"
end
# result
"0番目は田所さんです"
"1番目は木村さんです"
"2番目は平野さんです"
each.with_index(n)
- 初期値をnとしてインデックス番号を扱うことができる
-
each
メソッドとwith_index
メソッドの合せ技であり、each_with_index
とは違う
name = ["遠野", "三浦", "橋田"]
# インデックス番号を1から始める
name.each.with_index(1) do |name, num|
puts "#{name}さんは#{num}着です"
end
# result
"遠野さんは1着です"
"三浦さんは2着です"
"橋田さんは3着です"
要素を好きなように切り分けて実行
each_slice(n)
- 配列の要素を指定したn個分切り分けて実行できる1
array = 1..10
# 2個づつに分けて実行
array.each_slice(2) do |array|
p array
end
# result
[1, 2]
[3, 4]
[5, 6]
[7, 8]
[9, 10]
# 3個づつに分けて実行
array.each_slice(3) do |array|
p array
end
# result
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]
each_cons(n)
- 連続したn個分の要素を一つづつずらして取得できる1
array = 1..7
# 3つ分の要素を一つづつ分けて実行
array.each_cons(3) do |array|
p array
end
# result
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
[4, 5, 6]
[5, 6, 7]
each_line
- 改行ごとに切り分ける
animals = "cat\ndog\nrabbit\nhamster"
animals.each_line do |animal|
puts animal
end
# result
"cat"
"dog"
"rabbit"
"hamster"