Array

ドキュメント:

class Array | Ruby リファレンスマニュアル [公式]

使い方

参考:

配列 (Array) の使い方 | TechRacho

select などの配列の抽出/検索を行うメソッドまとめ – Qiita

select / reject / partition – 配列の条件を満たす要素を列挙する/取り除く | ぬいぐるみライフ?

map / select / collect / each の違い – Qiita

配列を作成する

参考:

Array.new | Ruby リファレンスマニュアル [公式]

Array#* | Ruby リファレンスマニュアル [公式]

結合

  • push
  • <<
  • concat
  • + / +=
  • reduce(:concat) / reduce([], :concat)
  • flatten / flatten!

参考:

複数の配列を1つの配列に結合するために色々やってみた – Qiita

配列をマージ/結合する – Qiita

Ruby で一番早い配列結合は | 動かざることバグの如し

Array#concat vs Array#+ · Issue #165 · JuanitoFatas/fast-ruby – GitHub

Array concat versus + speed? – Stack Overflow

抽出

参考:

select などの配列の抽出/検索を行うメソッドまとめ – Qiita

How do I extract specific elements from an array? – Stack Overflow

重複を除外する

参考:

Array#uniq | Ruby リファレンスマニュアル [公式]

重複の抽出

参考:

配列で重複する値のみを取り出す | EasyRamble

配列から重複した要素を抜き出す/uniq の逆 | それマグで!

配列内の重複する値を抽出する方法 | 久保清隆のブログ

集合演算

  • &積集合
  • |和集合
  • 除外

参考:

Array#& | Ruby リファレンスマニュアル [公式]

Array#| | Ruby リファレンスマニュアル [公式]

Array#- | Ruby リファレンスマニュアル [公式]

Array#union | Ruby リファレンスマニュアル [公式]

Array#difference | Ruby リファレンスマニュアル [公式]

Filter to exclude elements from array – Stack Overflow

concat

末尾に指定した配列を結合する。

array.concat(other_array)
Code language: Ruby (ruby)

複数の配列を渡すこともできる。

array.concat(*other_arrays)
Code language: Ruby (ruby)

参考:

Array#concat | Ruby リファレンスマニュアル [公式]

String#concat, Array#concat and String#prepend take multiple arguments in Ruby 2.4 | BigBinary Blog

push

配列の末尾に要素を追加する。

array.push("a", "b", "c")
Code language: Ruby (ruby)

参考:

Array#append | Ruby リファレンスマニュアル [公式]

Ruby の Array#<< は Array#push よりも速いか | Big Sky

shift

先頭の要素を取り除いて返す。

array = [0, 1, 2, 3] array.shift # => 0 array # => [1, 2, 3]
Code language: Ruby (ruby)

参考:

Array#shift | Ruby リファレンスマニュアル [公式]

unshift

配列の先頭に要素を追加する。

array = ["end"] array.unshift("a", "b", "c") # => ["a", "b", "c", "end"]
Code language: Ruby (ruby)

参考:

Array#prepend | Ruby リファレンスマニュアル [公式]

<<

左辺の配列の末尾に右辺のオブジェクトを要素として加える。配列自身を返すため、連続して追加できる。

array = [] array << 1 << 2 << 3 # => [1, 2, 3]
Code language: Ruby (ruby)

参考:

Array#<< | Ruby リファレンスマニュアル [公式]

slice / slice!

slice は指定された自身の要素/部分配列を返す。Array#[] のエイリアス。

array = [0, 1, 2, 3, 4, 5] array.slice(2) # => 2 array.slice(1, 3) # => [1, 2, 3] array.slice(2..4) # => [2, 3, 4]
Code language: Ruby (ruby)

slice! は指定した要素/部分配列を自身から取り除き、取り除いた要素を返す。取り除く要素がなければ nil を返す。

array = ["a", "b", "c", "d", "e"] array.slice!(0) # => "a" array # => ["b", "c", "d", "e"] array.slice!(1, 2) # => ["c", "d"] array # => ["b", "e"] array.slice!(0..2) # => ["b", "e"] array # => []
Code language: Ruby (ruby)

参考:

Array#slice | Ruby リファレンスマニュアル [公式]

Array#slice! | Ruby リファレンスマニュアル [公式]

[] / at

self[nth] -> object | nil
at(nth) -> object | nil
self[range] -> Array | nil
self[start, length] -> Array | nil
範囲の指定
  • ドット2つは終端を含む
  • ドット3つは終端を含まない
[0, 1, 2][0..2] # => [0, 1, 2] [0, 1, 2][0...2] # => [0, 1]
Code language: Ruby (ruby)

参考:

Array#[] | Ruby リファレンスマニュアル [公式]

each / each_index / reverse_each

参考:

Array#each | Ruby リファレンスマニュアル [公式]

Array#each_index | Ruby リファレンスマニュアル [公式]

Array#reverse_each | Ruby リファレンスマニュアル [公式]

Change value of array element which is being referenced in a .each loop? – Stack Overflow

繰り返しで最初の要素/最後の要素を判別する

参考:

配列の要素で最初と最後だけ特別な処理をする | なりちゅうのエンジニアブログ

ループの最初と最後のみ特別扱いする書き方 – Qiita

Enumerable#each_with_index | Ruby リファレンスマニュアル [公式]

Array#first | Ruby リファレンスマニュアル [公式]

Array#last | Ruby リファレンスマニュアル [公式]

Object#equal? | Ruby リファレンスマニュアル [公式]

Tell the end of a .each loop in ruby – Stack Overflow

reverse / reverse!

reverse は要素を逆順に並べ替えた配列を生成する。reverse! は破壊的に逆順に並べ替える。

参考:

Array#reverse | Ruby リファレンスマニュアル [公式]

break / next / redo

参考:

break / next / redo の違い | Worth Living

next / break でよく分かってなかったこと | dunno logs

多重ループを抜ける方法 | 或るプログラマの開発日記

配列を指定回数だけループ (each) で処理する | イソップブログ

index / find_index

配列から引数と同じ要素を探し、その位置を 0 から始まる整数で返す。要素が見つからない場合は nil を返す。

["a", "b", "c"].index("c")  # => 2 ["a", "b", "c"].index("z")  # => nil
Code language: Ruby (ruby)

参考:

Array#find_index | Ruby リファレンスマニュアル [公式]

find / detect

要素に対して順にブロックを評価し、最初に真になった要素を返す。全ての要素について偽であった場合に、proc が与えられていれば call し、proc が与えられていなければ nil を返す。

[1, 2, 3, 4, 5].find { |v| v % 5 == 0 } # => 5 [1, 2, 3, 4, 5].find { |v| v % 6 == 0 } # => nil [1, 2, 3, 4, 5].find(proc { "EEE" }) { |v| v % 6 == 0 } # => "EEE" ["a", "b", "c"].find(proc { raise "Bye!" }) { |s| s == "z" } # => RuntimeError: Bye!
Code language: Ruby (ruby)

参考:

Enumerable#detect | Ruby リファレンスマニュアル [公式]

select / filter / find_all

条件に合う要素を探して集める。

array.select { |item| block }

ブロック引数に要素を入れながらブロックを繰り返し、ブロックの戻り値が真になった要素を集めて新しい配列にして返す。

ブロックを省略した場合は Enumerator オブジェクトを返す。

参考:

select などの配列の抽出/検索を行うメソッドまとめ – Qiita

Array#filter | Ruby リファレンスマニュアル [公式]

Array#filter! | Ruby リファレンスマニュアル [公式]

Enumerable#filter | Ruby リファレンスマニュアル [公式]

select! / filter! / keep_if

参考:

Array#filter! | Ruby リファレンスマニュアル [公式]

Array#keep_if | Ruby リファレンスマニュアル [公式]

length / size

配列の長さを返す。配列が空のときは 0 を返す。

array.length

参考:

count / length / size メソッドの違いと特徴を比較 – Qiita

Array#length | Ruby リファレンスマニュアル [公式]

reject / reject!

ブロックの戻り値が真である要素を取り除く。

array.reject { |item| block }

要素の数だけブロックを繰り返し実行し、ブロックの戻り値が真になった要素を取り除いた新しい配列を作成して返す。ブロック引数には各要素が入る。

参考:

Enumerable#reject | Ruby リファレンスマニュアル [公式]

Array#delete_if | Ruby リファレンスマニュアル [公式]

delete

参考:

Array#delete | Ruby リファレンスマニュアル [公式]

compact / compact!

配列から nil の要素を取り除いた新しい配列を返す。

array.compact
Code language: Ruby (ruby)

compact! メソッドは、配列から nil である要素を取り除く。レシーバ自身を変更するメソッド。戻り値は、nil を削除したときはレシーバ自身、変更がなかったときは nil となる。

array.compact!
Code language: Ruby (ruby)

参考:

Array#compact | Ruby リファレンスマニュアル [公式]

flatten / flatten!

参考:

Array#flatten | Ruby リファレンスマニュアル [公式]

map / collect

参考:

map の途中で next を使用すると nil が入ってしまう罠 – Qiita

map で条件分岐をした時に nil が返ってきてしまう時の対処法 | 地方でリモートワーク

Enumerable#collect | Ruby リファレンスマニュアル [公式]

Change value of array element which is being referenced in a .each loop? – Stack Overflow

How do I break out of a map/collect and return whatever has been collected up to that point? – Stack Overflow

map! / collect!

参考:

Array#collect! | Ruby リファレンスマニュアル [公式]

Change value of array element which is being referenced in a .each loop? – Stack Overflow

reduce / inject / each_with_object

参考:

inject と each_with_object をうまく使い分ける 翻訳 | TechRacho

Enumerable#inject | Ruby リファレンスマニュアル [公式]

Enumerable#each_with_object | Ruby リファレンスマニュアル [公式]

join

参考:

Array#join | Ruby リファレンスマニュアル [公式]

sample

参考:

Array#sample | Ruby リファレンスマニュアル [公式]

drop

参考:

某「Ruby で cdr っぽい事したい? drop 使えば良いんじゃないですか? (鼻ホジ」ぼく「……あっ」| Bye Bye Moore

Enumerable#drop | Ruby リファレンスマニュアル [公式]

include?

参考:

Array#include? | Ruby リファレンスマニュアル [公式]

配列を比較する

全ての要素を == で比較して true であれば true を返す。それ以外の場合は false を返す。

参考:

Array と Hash は == で中身の比較を行う | ぺけみさお

Array#== | Ruby リファレンスマニュアル [公式]

zip

参考:

Array#zip | Ruby リファレンスマニュアル [公式]

combination / permutation

  • combination組み合わせを生成する
  • permutation順列を生成する
  • repeated_combination要素の重複を含めた組み合わせを生成する
  • repeated_permutation要素の重複を含めた順列を生成する

参考:

順列/組み合わせ | siman のブログ

順列 (permutation) を作成する | まくまくノート

Array の組み合わせ系メソッドまとめ – Qiita

Array#combination | Ruby リファレンスマニュアル [公式]

Array#permutation | Ruby リファレンスマニュアル [公式]

Array#repeated_combination | Ruby リファレンスマニュアル [公式]

Array#repeated_permutation | Ruby リファレンスマニュアル [公式]

assoc / rassoc

参考:

Array#assoc | Ruby リファレンスマニュアル [公式]

Array#rassoc | Ruby リファレンスマニュアル [公式]

reverse lookup of array list of values – Stack Overflow

Array.[]

要素を与えて Array から派生したクラスのインスタンスを生成する。

class ArrayLike < Array; end array = ArrayLike[1, 2, 3] array.is_a?(ArrayLike) # => true array.is_a?(Array) # => true
Code language: Ruby (ruby)

参考:

Array.[] | Ruby リファレンスマニュアル [公式]

break

参考:

How to break out from a ruby block? – Stack Overflow

集計する

参考:

重複するキーを指定して他の値を計算する方法 – Qiita

Kernel.#Array / Array.wrap

配列であればそのまま返し、配列でない場合には値を要素にした配列を生成して返す。

Array(123) # => [123] Array("Hello") # => ["Hello"] Array(nil) # => [] Array([1, 2, 3]) # => [1, 2, 3] Array({ a: "hoge", b: "fuga" }) # => [[:a, "hoge"], [:b, "fuga"]] Array(1..5) # => [1, 2, 3, 4, 5]
Code language: Ruby (ruby)

Array.wrap はハッシュやレンジを与えた場合にそのまま配列で包む。

Array.wrap({ a: "hoge", b: "fuga" }) # => [{ a: "hoge", b: "fuga" }] Array.wrap(1..5) # => [1..5]
Code language: Ruby (ruby)

参考:

Ruby の便利メソッド Kernel#Array | hotoolong’s blog

Kernel.#Array | Ruby リファレンスマニュアル [公式]

wrap – Array | Ruby on Rails API [Official]

elegantly convert variable to an array if not an array already – Stack Overflow

Convert Ruby hash into array without calling `Hash#to_a` – Stack Overflow

ActiveSupport 拡張

参考:

Array の拡張 | Rails 日本語ドキュメント (Ruby STUDIO)

ちょっと便利な ActiveSupport の標準クラス拡張 Array & Hash 編 | おどるダメ人間

extract!

参考:

Rails 6 のちょい足しな新機能を試す Array#extract! 編 – Qiita

Array#extract! to Active Support 6.0 | Bogdan

extract! – Array | Ruby on Rails API [Official]

excluding – Array | Ruby on Rails API [Official]

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。

Protected by reCAPTCHA