#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
}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS