配列の数、要素の長さ
index.rbary = ["aaaaa","aa","aaa"] p ary.length #=> 3 #配列の要素数 p ary[0].length #=> 5 #配列の一番目にある文字の長さ
要素の特定、検索、場所
index.rb#include?は要素の皆無を調べる ary = ["a","b","c"] p ary.include?("a") #=>true p ary.include?("d") #=>false #findは要素を探して取り出す ary = [1,3,6,8] p ary.find{|n| n % 3 == 0 } #=> 3 #3で割り切れるものを一個しか返さない p ary.find_all{|n| n % 3 == 0 } #0> [3,6] #3で割り切れるもの全て返す ary = ["a","ab","cc","ac","ds"] p ary.find_all{|n| n.include?("a")} #=>["a", "ab", "ac"] #aと含まれているものを返す #indexは要素の位置を教えてくれる ary = ["a","b","c"] p ary.index("b") #=> 1
要素を結合させる
ary = ["a","b","c"] p ary.join #=> "abc" #配列の中にある要素を全て結合 p ary.join(",") #=> "a,b,c" #引数を指定するとそれを区切り文字とする
要素を順番に取り出して使う
ary = ["a","b","c"] ary.each do |n| puts n end #=>"a","b","c"と順番に出力される
参考にしたサイト一覧
http://www.sejuku.net/blog/11843#index
http://ref.xaio.jp/ruby
多次元配列
多次元配列の作り方
index.rbary = Array.new(3) p ary #=> [nil,nil,nil] ary = Array.new(3, Array.new(3, "a") ) #=>[[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]] #これで2次元配列ができる ary = Array.new(3, Array.new(3, "a") ) #=>[["a", "a", "a"], ["a", "a", "a"], ["a", "a", "a"]] #第二引数に要素を指定できる
要素の追加
index.rbary = Array.new(3, Array.new(3, "a") ) ary[0][0] = 1 p ary #=> [[1, "a", "a"], [1, "a", "a"], [1, "a", "a"]] ary = Array.new(3).map{Array.new(3,0)} ary[0][0] = 1 p ary #=> [[1, "a", "a"], ["a", "a", "a"], ["a", "a", "a"]]
index.rb上記の原因は全て同じオブジェクトとして認識されているため
そこでmapメソッドを使って別々のオブジェクトとして初期化
ary = Array.new(3, Array.new(3, "a") ) p ary.map(&:object_id) #idを調べる #=>[70167967248120, 70167967248120, 70167967248120]
同じobject_idが出るためmapで別々のオブジェクトに作り変える
index.rbary = Array.new(3).map{Array.new(3,0)} p ary(&:object_id) #=> [70190754844300, 70190754844200, 70190754844140]
下記のサイトを見ておお!ってなりました。
http://simanman.hatenablog.com/entry/2013/06/24/200306
ちなみにmap抜かしても同義になるので、そこはまだ謎です。
ary = Array.new(3){Array.new(3,0)}
p ary.map(&:object_id)
#=> [70322091142940, 70322091142840, 70322091142800]