LeetCodeでアルゴリズム学習をするあたり、使った配列系のメソッドを紹介いたします。
新しいものを使ったら随時更新していこうと思います。
配列への追加・挿入
【要素の追加】
● push
配列.push(追加する要素)
a = [1, 2, 3]
a.push(4)
p a
=> [1, 2, 3, 4]
● <<
配列 << 追加する要素
a = [1, 2, 3]
a << 4
p a
=> [1, 2, 3, 4]
【要素の挿入】
● insert
配列.insert(挿入位置, 挿入する要素)
## 第1引数で指定した位置に、第2引数の要素が挿入
a = [1, 2, 3]
a.insert(2, 4)
p a
=> [1, 2, 4, 3]
## 第1引数にマイナスの値を指定すると末尾から計算した位置に要素が挿入
a = [1, 2, 3]
a.insert(-2, 4)
p a
=> [1, 4, 2, 3]
## 複数要素を同時に挿入する場合は、第3引数以降に要素を渡すことで追加できます。
a = [1, 2, 3]
a.insert(2, 4, 5)
p a
=> [1, 2, 4, 5, 3]
【要素を先頭に挿入】
● unshift
配列.unshift(挿入する要素)
a = [1, 2, 3]
a.unshift(4)
p a
=> [4, 1, 2, 3]
## 複数要素を同時に先頭に挿入する場合は、第2引数以降に要素を渡すことで挿入
a = [1, 2, 3]
a.unshift(4, 5)
p a
=> [4, 5, 1, 2, 3]
配列削除
【要素を削除】
● delete
array = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
array.delete("Ruby")
=> "Ruby"
p array
=> ["Rails", "Javascript", "Go", "PHP"]
【戻り値】
(成功) ⇒ 削除した要素
(失敗) ⇒ nil
【指定のindexの要素を削除】
● delete_at
array = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
## 引数にindex番号を指定
array.delete_at(2)
=> "Javascript"
p array
=> ["Ruby", "Rails", "Go", "PHP"]
【戻り値】
(成功) ⇒ 削除した要素
(失敗) ⇒ nil
【条件に合った 配列の要素を削除】
● delete_if
array = ["Ruby", "Rails", "Javascript", "Go", "PHP", "Java"]
## 「文字数が4」のものを削除
array.delete_if do |name|
name.size == 4
end
=> ["Rails", "Javascript", "Go", "PHP"]
【戻り値】
(成功) ⇒ 削除後の配列
(失敗) ⇒ 削除前の配列
【配列の先頭要素から削除】
● shift
【通常】
array = ["Ruby", "Rails", "Javascript", "Go", "PHP", "Java"]
array.shift()
=> "Ruby"
p array
=> ["Rails", "Javascript", "Go", "PHP", "Java"]
【戻り値】
(成功) ⇒ 削除した要素
(失敗) ⇒ 空の配列(“[]”)に対してshiftメソッドを実行すると、そのまま空の配列が返る
【引数指定】
array = ["Ruby", "Rails", "Javascript", "Go", "PHP", "Java"]
## 引数の数だけ先頭から要素を削除する
array.shift(3)
=> ["Ruby", "Rails", "Javascript"]
p array
=> ["Go", "PHP", "Java"]
【配列の後ろの要素から削除】
● pop
【通常】
array = ["Ruby", "Rails", "Javascript", "Go", "PHP", "Java"]
array.pop()
=> "Java"
p array
=> ["Ruby", "Rails", "Javascript", "Go", "PHP"]
【戻り値】
(成功) ⇒ 削除した要素
(失敗) ⇒ 空の配列(“[]”)に対してshiftメソッドを実行すると、そのまま空の配列が返る
【引数指定】
array = ["Ruby", "Rails", "Javascript", "Go", "PHP", "Java"]
## 引数の数だけ後ろから要素を削除する
array.pop(3)
=> ["Go", "PHP", "Java"]
p array
=> ["Ruby", "Rails", "Javascript"]
【指定した範囲の要素削除】
● slice!
array = ["Ruby", "Rails", "Javascript", "Go", "PHP", "Java"]
## 引数二つに開始位置と終了位置を入れる
array.slice!(0,2)
=> ["Ruby", "Rails"]
p array
=> ["Javascript", "Go", "PHP", "Java"]
【戻り値】
(成功) ⇒ 削除した要素
【配列内からnil
を削除する】
● compact
array = ["Ruby", "Rails", nil, "Javascript", "Go", "PHP", "Java", nil]
array.compact
## 戻り値は「削除後の配列」だが、元々の配列はnilが含まれたままである非破壊的メソッド
=> ["Ruby", "Rails", "Javascript", "Go", "PHP", "Java"]
p array
=> ["Ruby", "Rails", nil, "Javascript", "Go", "PHP", "Java", nil]
【戻り値】
(成功) ⇒ 削除後の配列
【配列内で重複した要素を一つにまとめる】
● uniq
array = ["Ruby", "Rails", "Ruby", "Javascript", "Go", "PHP", "Java", "Java"]
## 戻り値は「まとめた後の配列」だが、元々の配列は重複が含まれたままの非破壊的メソッド
array.uniq
=> ["Ruby", "Rails", "Javascript", "Go", "PHP", "Java"]
【戻り値】
(成功) ⇒ まとめた後の配列
【配列内の要素を全て一気に削除】
● clear
array = ["Ruby", "Rails", "Javascript", "Go", "PHP", "Java"]
array.clear
=> []
【戻り値】
(成功) ⇒ 結果の配列
【四則演算】
● -
array1 = ["Ruby", "Rails", "Javascript", "Go", "PHP", "Java"]
array2 = ["Ruby", "Rails", "Java"]
## 戻り値は「演算後の配列」だが、元々の配列はそのままである非破壊的メソッド
array1 - array2
=> ["Javascript", "Go", "PHP"]
array1
=> ["Ruby", "Rails", "Javascript", "Go", "PHP", "Java"]
【戻り値】
(成功) ⇒ 結果の配列