Closed14
Ruby・Railsのメソッド一覧
include?
配列に対して、渡された引数が含まれていたらtrue,含まれてなければfalseといった真偽値を返す。
array.include?(obj)
# 例
[1, 2, 3, 99].include?(99)
=> true
[1, 2, 3, 99].include?(100)
=> false
compact
arrayにnilが含まれていれば、そのnilを除いた配列が返り値として返す。
array.compact
# 例
[1, 2, nil, 3, 99, nil].compact
=> [1, 2, 3, 99]
merge(チェリー本より引用)
mergeメソッドを使うことによって、ハッシュリテラル内({ japan: 'yen', h})のほかのハッシュのキーと値({ us: 'dollar', india: 'rupee' })を展開できる。
hash = { us: 'dollar', india: 'rupee' }
{ japan: 'yen' }.merge(hash) #=> {:japan=>"yen", :us=>"dollar", :india=>"rupee"}
Railsのmergeを使用するタイミング
『ユーザから受け取ったparamsにはないけど、レコード作成時に追加したい値がある場合はmergeメソッドで含めることができる』
def post_params
params.require(:post).permit(:title,:body)
.merge(user_id:current_user.id)
end
join
joinの引数に指定した文字を区切り文字として配列の各要素を連結させて文字列型で返り値を返す。
何も引数を指定しなければ、区切り文字を使用せずに要素を連結させた文字列として返り値を返す。
array.join("")
# 例
[1, 2, 3, 4].join(",")
=> "1,2,3,4"
[1, 2, 3, 4].join("")
=> "1234"
Railsではモデルの結合とかでよく使う
strip
レシーバーの先頭、もしくは末尾に空白文字が存在する場合、それらを除去して新しい文字列を返す。
string.strip
# 例
" プログラミングをしよう ".strip
=> "プログラミングしよう"
split
splitメソッドを使えば、以下のコードのように文字列をカンマ(,)で分割し、その分割した文字列を要素とした配列で取得することができる。
# split([sep[, limit]])
"文字列".split(区切り文字, 分割数)
# デフォルトでは空白に沿って要素を区切る
color = "blue yellow red"
color.split
["blue", "yellow", "red"]
"Apple,Orange,Cherry,Banana".split(',')
=> ["Apple", "Orange", "Cherry", "Banana"]
"AppleAndOrangeAndCherryAndBanana".split('And')
=> ["Apple", "Orange", "Cherry", "Banana"]
unshift/push
unshiftは、引数であるオブジェクトを配列の先頭に入れる。
obj = [1, 2, 3, 4]
obj.unshift(5)
=> [5, 1, 2, 3, 4]
pushは、引数であるオブジェクトを配列の末尾に入れる。
obj = [1, 2, 3, 4]
obj.push(5)
=> [1, 2, 3, 4, 5]
uniq
配列の中で重複した要素を削除する。
obj = [1, 1, 2, 2, 3, 4, 4, 5]
obj.uniq
=> [1, 2, 3, 4, 5]
inject
配列の中の要素を繰り返し計算するときに使う。
obj = [1, 2, 3, 4, 5]
obj.inject() { |sum, n| sum += n }
=> 15
#初期値を設定できる。
obj = [1, 2, 3, 4, 5]
obj.inject(10) { |sum, n| sum += n }
=> 25
map
要素の数だけブロックを繰り返し、各要素に対してブロックを評価した新しい配列を返す。
["suzuki", "tanaka", "yamada"].map { |obj| obj.upcase }
=> ["SUZUKI", "TANAKA", "YAMADA"]
# 短く記述できる。
["suzuki", "tanaka", "yamada"].map(&:upcase)
=> ["SUZUKI", "TANAKA", "YAMADA"]
select
ブロックの戻り値が真のものだけを配列として返す。
obj = ["suzuki", "tanaka", "yamada", 3, 8]
obj.select { |i| i.class == String }
=> ["suzuki", "tanaka", "yamada"]
reject
配列の戻り値が偽の要素だけを返します。
obj = ["suzuki", "tanaka", "yamada", 3, 8]
obj.select { |i| i.class == String }
=> [3, 8]
このスクラップは2022/03/31にクローズされました