はじめに

rubyの勉強をはじめたので、
自分の思考の整理、メモとして配列に関しての基礎的なことを書きます。

  • terminalにてirbと打つことでコードを試すことができる。exitで終了
  • 拡張子.rbのファイルにコードを記述してterminalにてruby ファイル名 でコードを実行できる。
  • puts pで表示できる。jsで言うところconsole.log()
  • コメントアウトは#

ruby 繰り返し処理 基本操作まとめ

生成 取得 追加 更新 削除

  • 生成
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"]

まだまだありますが、とりえあえずここで止めます。
次は配列の繰り返し処理についてまとめたいと思います。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.