Help us understand the problem. What is going on with this article?

rubyのブロック処理における配列関連のメソッドメモ

チェリー本を参考にした。このあたりよく忘れるのでメモっておく

each

普通のfor文と同じ役割

num = [1,2,3,4]
sum = 0
num.each do |n|
  sum += n
end
print sum #=> 10

each_with_index

eachについて配列のインデックスも扱うことができる

num = [1,2,3,4]
num.each_with_index do |i,n|
  p "#{i}:#{n}"
end
#出力は以下の通り
#0:1
#1:2
#2:3
#3:4

map

ある配列の要素に対する処理結果を別配列に返す

num = [1,2,3,4]
new_num = []
new_num = num.map do |n|
  n * 10
end
print new_num #=> [10,20,30,40]

エイリアスメソッドであるcollectも同様の使い方が可能

select/find_all

ある配列の要素について、条件に一致しているものを返す

num = [1,2,3,4]
new_num = num.select do |n|
  n.odd? #nが奇数のものをnew_numへ格納
end
print new_num  #=> [1,3]

エイリアスメソッドであるfind_allも同様の使い方が可能

reject

ある配列の要素について、条件に一致していないものを返す
要するにselect/find_allの反対

num = [1,2,3,4]
new_num = num.select do |n|
  n.odd? #nが奇数でないものをnew_numへ格納
end
print new_num  #=> [2,4]

find/detect

ある配列について、戻り値が真かつ最初の要素を返す

num = [1,2,3,4]
new_num = num.find do |n|
  n.odd?
end
print new_num #=> 3

エイリアスメソッドであるdetectも同様の使い方が可能

inject/reduce

ある値を初期値として配列各要素を足しこむ。eachの拡張か。

num = [1,2,3,4]
sum = num.inject(0) do |result,n|
  result += n #初期値0に各要素をすべて足しこむ。初期値が異なれば結果も異なる。
end
print sum #=> 10

当然ながら文字列の結合処理にも利用可能
エイリアスメソッドであるreduceも同様の使い方が可能

その他

map/collectとinject/reduceの思想の違いらしい。エイリアスというくらいなので多分map処理を名前変えてcollectとかしてんだろうな。要するに実装上の違いはないと思うがどうなのか。。。
https://magazine.rubyist.net/articles/0038/0038-MapAndCollect.html#map-%E3%81%A8-collect-%E3%81%AE%E7%99%BA%E6%83%B3%E3%81%AE%E9%81%95%E3%81%84

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした