##はじめに
rubyの勉強をはじめたので、
自分の思考の整理、メモとして配列に関しての基礎的なことを書きます。
-
terminal
にてirb
と打つことでコードを試すことができる。exit
で終了 - 拡張子.rbのファイルにコードを記述して
terminal
にてruby ファイル名
でコードを実行できる。 -
puts
p
で表示できる。jsで言うところconsole.log()
- コメントアウトは
#
##生成 取得 追加 更新 削除
- 生成
array = []
# []
array = [1,2,3]
# [1,2,3]
- 連番
範囲オブジェクトを利用 (first..last)
.to_a
で配列(Array)にできる
*範囲オブジェクト
「..」演算子の左辺に最初の値を指定し右辺に最後の値を指定します。最初と最後の値には数値や文字列などのオブジェクトが指定可能
(1..5).to_a
# [1,2,3,4,5]
- 取得
配列[index]の形式
array = ["a","b","c",nil]
p array[0]
#"a"
- 追加
使用してないindexを指定して代入
push()を使用 末尾に追加
<<
を使用
array = ["a","b","c","d"]
array[4] = "e"
p array
#["a", "b", "c", "d", "e"]
array.push("f")
p array
#["a", "b", "c", "d", "e", "f"]
array << 'hoge'
p array
#["a", "b", "c", "d", "e", "f", "hoge"]
- 更新
更新したいindexを指定して代入
array = ["a","b","c","d"]
array[0] = "e"
p array
#["e", "b", "c", "d"]
- 削除
deleteメソッドを使用
引数に削除した要素を指定
indexを指定、空の配列を代入することで削除も可能
array = ["a","b","c","d","f"]
array.delete("a");
p array
#["b", "c", "d","f"]
#[index番号, 削除する個数]で指定
array[0,3] = []
p array
#["f"]
##insert 挿入
第一引数に挿入するindex
第二引数に挿入する要素を指定
array = (1..5).to_a
array.insert(3,777)
p array
# [1, 2, 3, 777, 4, 5]
##concat 配列の結合
引数に結合したい配列を指定
arrayA = ["a", "b", "c"]
arrayB = ["d", "e", "f"]
arrayA.concat(arrayB)
p arrayA
#["a", "b", "c", "d", "e", "f"]
##join 結合した文字列の作成
引数に結合する際に使用するものを指定できる
array = ['ruby','javascript','php','python']
newArray = array.join(',')
p newArray
#"ruby,javascript,php,python"
##map 処理を加えて、新しい配列を生成
|a|
の部分に配列の各要素が渡されて処理される。
array = (1..5).to_a
def map_test(array)
array.map do |a|
a*2
end
end
newArray = map_test(array)
p newArray
p array
#[2, 4, 6, 8, 10]
#[1, 2, 3, 4, 5]
##select 選択 絞り込み
array = (1..12).to_a
p array.select {|a| a % 2==0}
#[2, 4, 6, 8, 10, 12]
##uniq 重複の削除
array = [1,1,2,2,2,3,4,4,5,8]
p array.uniq
#[1, 2, 3, 4, 5, 8]
##length size count 要素の数をかぞえる
- length sizeは基本的に同じ
array = ["a","b","c"]
str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
p array.length
p str.length
#3
#123
- count
引数を条件として、条件に合った要素の数だけを取得
array = ["a","b","c"]
p array.count("a");
#1
nil(無)を除いた要素数を数える
array = ["a","b","c",nil]
p array.size
p array.count{ |num| !num.nil? }
#4
#3
##push pop unshift shift
- push 末尾に追加
- pop 末尾を削除
array = ["a","b","c","d","e"]
array.push(1);
p array
#["a", "b", "c", "d", "e", 1]
array.pop
p array
#["a", "b", "c", "d", "e"]
- unshift 先頭に追加
- shift 先頭を削除
array = ["a","b","c","d","e"]
array.unshift(1);
p array
#[1, "a", "b", "c", "d", "e"]
array.shift
p array
#["a", "b", "c", "d", "e"]
##reverse reverse! 反転
reverseは反転して新しい配列を返す
reverse!は指定した配列そのものを判定して返す
array = ["a","b","c","d","e"]
newArray = array.reverse
p array
p newArray
#["a", "b", "c", "d", "e"]
#["e", "d", "c", "b", "a"]
array.reverse!
p array
#["e", "d", "c", "b", "a"]
##sort sort_by 並び替え
- sort
新しい配列を返す
|a, b| の指定の仕方で昇順と降順を設定
昇順
a <=> b
降順
b <=> a
降順の場合、
bがaより大きいときに1を返し、bがaより小さいときに-1を返す。bとaが等しいときは0を返す。
この返り値により、sortはbが大きいときはそのまま、bが小さいときはaと順番を入れ替る。bとaが等しいときにも何もしない挙動となる。
array = [4,7,8,2,8,3,5,0,9,1,3]
newArray = array.sort
p newArray
#[0, 1, 2, 3, 3, 4, 5, 7, 8, 8, 9]
array = [4,7,8,2,8,3,5,0,9,1,3]
newArray = array.sort{|a ,b| b<=>a}
p newArray
- sort_by
|a|
の部分に並び替えの条件を設定できる
array = ['ruby','javascript','php','python']
newArray = array.sort_by{|a| a.size}
p newArray
#["php", "ruby", "python", "javascript"]
降順にはreverse
を使う
array = ['ruby','javascript','php','python']
newArray = array.sort_by{|a| a.size}.reverse
p newArray
#["javascript", "python", "ruby", "php"]
まだまだありますが、とりえあえずここで止めます。
次は配列の繰り返し処理についてまとめたいと思います。