ruby 配列操作

本稿について

本稿はサイト運営者が学んだことなどを記したメモの内容です。
全てが正確な情報とは限りません。ご注意ください。また修正するべき点は適時修正していきます
重複削除
array.uniq
 
配列の特定のデータを削除する
array.delete_if {|data| data.name == 'admin'}

配列をカンマ区切りのstringにする
str = array.join(“,”)

配列の中を検索する (1件)
user = users.find { |user| user[:id] == target_id }

配列の中を検索する(複数件)
user = users.select { |user| user[:id] == target_id }

配列のindexを取得する (引数に指定したデータのindexの取得)
array.index('hoge')

配列同士の検索
array1 & array2

配列同士の結合
merge_array = array1.concat(array2)

配列を特定の条件で配列を区切る
# 日付毎に区切る(配列と言うよりはActiveRecordを使っている)
@tasks = @tasks.to_a.group_by{ |task| task.start_at.to_date.to_s }

index込みで配列を回す
array.each_with_index { |hoge, index| }

ハッシュを配列に変換する
{ hoge: 1, fuga: 2 }.to_a

sortする
array = [3,2,1]
array = array.sort do |a,b|
  a <=> b
end
puts array
=> [1, 2, 3]

複合sort
array = array.sort_by do |t|
  [t.no, t.created_at]
end

配列の値を合計する
array.inject(:+)

配列の値を合計する(Railsの場合)
array.sum
array.sum { |data| data.num }
mapなどで回している対象のメソッドの実行例
array.map(&:to_s)

配列からランダムに値を取り出す
array = [1,2,3,4,5,6,7]
array.sample(5) # 5個取り出す
=> [7, 2, 3, 5, 4]
array.sample(10) # 10個取り出す 足りなければ最大数返す
=> [2, 1, 7, 4, 3, 6, 5]

Ruby2.5から追加 append/prepend
array = [1,2,3]
array.append 4
array #=> [1,2,3,4]
array.prepend 0
array #=> [0,1,2,3]

[参考]

Back