#author("2022-06-03T04:25:56+00:00","default:src128","src128") #author("2022-07-15T08:55:06+00:00","default:src128","src128") *目次 [#qe6f8ecb] #contents *基本 [#y0ee845a] Rubyで配列はArrayクラスのインスタンス。ArrayクラスはEnumerableをインクルードしている。リファレンスマニュアルで検索する場合は両方を参照する。 *追加 [#d48ba36f] **配列に配列を追加 [#n92018f8] ***concatを使う [#xbf9f69a] #pre{{ a = [1, 2] b = [3, 4] a.concat(b) p a # => [1, 2, 3, 4] }} *削除 [#y51f61c8] **先頭要素を削除する [#r2705e34] *** shiftを使う [#i00b4b90] #pre{{ a = ["a", "b", "c", "d", "e"] p a.shift }} *** delete_at(0)を使う [#w477e13f] #pre{{ a = ["a", "b", "c", "d", "e"] p a.delete_at(0) }} *検索 [#jf591a75] **要素が存在するかどうか確認 [#udfbdf85] ***include?を使う。 [#ka98caf8] -要素が含まれればtrue、なければfalseが返される。 #pre{{ array = [10, 6, 4] p array.include?(6) }} **条件に一致した要素を検索し結果を配列として返す [#i217e6a7] ***selectを使用する [#p9c52293] -ブロック内がtrueになる要素からなる配列が作成される。 [1,2,3,4].select {|n| n % 2 == 0} #=> [2, 4, 6] **条件に一致する要素の数をカウントする [#j5193f40] ***countに条件が指定可能 [#c3153264] #pre{{ ary = [1, 2, 4, 2] ary.count #=> 4 #配列のサイズ ary.count(2) #=> 2 #2に一致する要素の数 ary.count { |x| x % 2 == 0 } #=> 3 #割り切れる要素の数 }} *整列 [#lf179304] **sort [#lce9d55d] -sortはブロックに渡された2つの要素を比較。以下の場合countの昇順にソート。「<=>」は前者が小さい場合-1、等しい場合0、大きい場合1を返す。 ary.sort {|a,b| a.count <=> b.count } **sort_by [#i9731161] -sort_byはブロックに渡された一つの要素を使う。 ary.sort_by{|a| a.count} -複数のキーを使ったソートの場合配列を使う。 ary.sort_by{|a| [a.count1,a.count2] *変換 [#ead71b4f] **全ての要素を評価した結果を配列として返す [#p93c5741] collect、mapを使う #pre{{ a = ["a", "b", "c", "d", "e"] p a.collect {|x| x + x } => ["aa", "bb", "cc", "dd", "ee"] }} **オブジェクトのプロパティをまとめた配列を取得する [#x59d1f8f] -user.emailの配列を取得したい場合。 #pre{{ users.map(&:email) }} -その意味。[[【Ruby】array.map(&:method)を理解する - Qiita:https://qiita.com/k-penguin-sato/items/420d7487b28b5d58cac4]] #pre{{ ['a','b'].map(&:upcase) #=> ["A", "B"] # 省略しない記法 ['a','b'].map do |string| :upcase.to_proc.call(string) end }}