#はじめに
初学者が学習の為にRubyのメソッド(配列やハッシュに関係するメソッドを中心に)をまとめました。
##メソッド一覧
###keysメソッド
hashからkeyを取り出す
> x = { "ruby"=>1 , "php"=>2 , "java"=>3 }
=> {"ruby"=>1, "php"=>2, "java"=>3}
> x.keys
=> ["ruby", "php", "java"]
###valuesメソッド
hashからkeyを取り出す
> x = { "ruby"=>1 , "php"=>2 , "java"=>3 }
=> {"ruby"=>1, "php"=>2, "java"=>3}
> x.values
=> [1, 2, 3]
###storeメソッド
hashにkeyと値を追加する
> x = { "ruby"=>1 , "php"=>2 , "java"=>3 }
=> {"ruby"=>1, "php"=>2, "java"=>3}
> x.store("python",4)
=> 4
> x
=> {"ruby"=>1, "php"=>2, "java"=>3, "python"=>4}
###selectメソッド
指定条件に合致するKeyと値を表示する
> x = { "ruby"=>1 , "php"=>2 , "java"=>3 }
=> {"ruby"=>1, "php"=>2, "java"=>3}
> x.select {|k, v| v >= 3 }
=> {"java"=>3}
#以下も同様
x.select do |k, v|
v >= 3
end
###to_aメソッド
レシーバー自身を返すメソッド。
範囲オブジェクトを、配列に変換する際に使用する場合が多い。
配列を2次元配列として返す。
> X = 1..10
=> 1..10
> X.to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
> x = { "ruby"=>1 , "php"=>2 , "java"=>3 }
=> {"ruby"=>1, "php"=>2, "java"=>3}
> x.to_a
=> [["ruby", 1], ["php", 2], ["java", 3]]
###to_hメソッド
2次元配列をハッシュ化する。
レシーバを[key, value] のペアの配列として、Hash を返す。
> x = [ ["ruby",1] , ["php",2] , ["java",3] ]
=> [["ruby", 1], ["php", 2], ["java", 3]]
> x.to_h
=> {"ruby"=>1, "php"=>2, "java"=>3}
array = User.all
array.map { |user| [user.id, user.name] }.to_h
> {1=>"sample", 2=>"sampleb", 3=>"Guest User", 4=>"test user"}
###to_iメソッド
integerクラス(整数)に変換する
> x = "123"
=> "123"
> x.to_i
=> 123
###*メソッド
四則演算の掛け算をするメソッド
Integerクラスの *メソッドは引数にIntegerクラスのインスタンスを与えなければいけない。
つまり右辺に整数を書く必要がある。
puts "*" * 4
> ****
=> nil
puts 4 * "*"
TypeError: String can't be coerced into Integer
from (pry):18:in `*'
###compactメソッド
配列のnill要素を削除する
> x = ["ruby","php",nil,"java",nil]
=> ["ruby", "php", nil, "java", nil]
> x.compact
=> ["ruby", "php", "java"]
###uniqメソッド
配列内の重複要素を削除する
> x = ["ruby","php",nil,"java",nil,"ruby","java"]
=> ["ruby", "php", nil, "java", nil, "ruby", "java"]
> x.uniq
=> ["ruby", "php", nil, "java"]
###joinメソッド
配列の要素を結合して一つの文字列にする
配列の要素が配列であった場合平坦化する
#結合
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.join
=> "rubyphpjava"
#引数で区切る
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.join(",")
=> "ruby,php,java"
#平坦化
> x = [["ruby","php"],["python","java"]]
=> [["ruby", "php"], ["python", "java"]]
> x.join(" ")
=> "ruby php python java"
###pushメソッド
配列の末尾に要素を連結する
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.push("python")
=> ["ruby", "php", "java", "python"]
###popメソッド
配列の末尾の要素を削除する
削除された要素は、popメソッドの戻り値として返る
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.pop
=> "java"
> x
=> ["ruby", "php"]
#引数に代入した数字の分要素を削除
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.pop(2)
=> ["php", "java"]
> x
=> ["ruby"]
###shiftメソッド
配列の先頭の要素を削除
配列の先頭の要素を取り出す
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.shift
=> "ruby"
> x
=> ["php", "java"]
#引数に代入した数字の分要素を削除
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.shift(2)
=> ["ruby", "php"]
> x
=> ["java"]
#要素を取り出す(popメソッドでも要素を取り出すことができる)
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> X = x.shift
=> "ruby"
> X
=> "ruby"
###unshiftメソッド
配列の先頭に要素を挿入する
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.unshift("python")
=> ["python", "ruby", "php", "java"]
###splitメソッド
指定した区切り文字で対象となる文字列を分割して配列にする
> x = "ruby, php, java"
=> "ruby, php, java"
> x.split(',')
=> ["ruby", " php", "java"]
#引数で指定しないと一文字ずつ配列にする
> x = "ruby"
=> "ruby"
> x.split('')
=>["r","u","b","y"]
###sliceメソッド
配列や文字列から指定の要素を切り出す
> x = ["ruby", "php", "java"]
=> ["ruby", "php", "java"]
> x.slice(0)
=> "ruby"
#「指定位置から指定の数」の要素をまとめて取りだすこともできる
#第一引数でインデックスを指定して第二引数で要素数を指定する
> x.slice(0,2)
=>["ruby", "php"]
###sortメソッド
配列の順番を並び替える
> x = [3,5,1,25,8]
=> [3,5,1,25,8]
> x.sort
=> [1, 3, 5, 8, 25]
#reverseメソッドで降順も可能
> x.sort.reverse
=> [25, 8, 5, 3, 1]
###pluckメソッド
引数に指定したカラムの配列を返す(Railsのメソッド)
#Userモデルのnameカラムに "Itiro" "jiro" "taro" が入っている場合
=> User.pluck(:name)
=> ["Itiro","jiro","taro",]
###chompメソッド
Stringクラスのメソッドで、文字列の末尾から改行コードを取り除いた文字列を返す
> a = "ruby\n"
=> "ruby\n"
> p a
"ruby\n"
=> "ruby\n"
> p a.chomp
"ruby"
=> "ruby"
#改行コードのない文字列に対して破壊的メソッドを使うとnilが返る
> a.chomp!
=> "ruby"
> a.chomp!
=> nil
###transposeメソッド
Arrayクラスのメソッドで、行列の転置(行と列の入れ換え)を行う。
key = [1, 2, 3]
value = ["gold", "silver", "bronze"]
ary = [key, value].transpose
p ary
=>[[1, "gold"], [2, "Silver"], [3, "Bronze"]]
p [[1,2],
[3,4],
[5,6]].transpose
=> [[1, 3, 5], [2, 4, 6]]
##最後に
誰かのお役にたてれば幸いです。
間違えている部分があればコメントお願いいたします。
参考にした記事
https://tech.raksul.com/2018/02/06/ruby_array_to_hash/
https://programming-beginner-zeroichi.jp/articles/93