Ruby 2.6.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Arrayクラス

class Array

クラス・モジュールの継承リスト: Array < Enumerable < Object < Kernel < BasicObject
dynamic include: JSON::Generator::GeneratorMethods::Array (by json)

要約

配列クラスです。配列は任意の Ruby オブジェクトを要素として持つことができます。

一般的には配列は配列式を使って



[1, 2, 3]

のように生成します。

特異メソッド

定義 説明
self[*item] -> Array

引数 item を要素として持つ配列を生成して返します。

new(size = 0, val = nil) -> Array

長さ size の配列を生成し、各要素を val で初期化して返します。

new(ary) -> Array

指定された配列 ary を複製して返します。 Array#dup 同様 要素を複製しない浅い複製です。

new(size) {|index| ... } -> Array

長さ size の配列を生成し、各要素のインデックスを引数としてブロックを実行し、各要素の値をブロックの評価結果に設定します。

try_convert(obj) -> Array | nil

to_ary メソッドを用いて obj を配列に変換しようとします。

インスタンスメソッド

定義 説明
self & other -> Array

集合の積演算です。両方の配列に含まれる要素からなる新しい配列を返します。重複する要素は取り除かれます。

self * times -> Array

配列の内容を times 回 繰り返した新しい配列を作成して返します。値はコピーされないことに注意してください。

self * sep -> String

指定された sep を間にはさんで連結した文字列を生成して返します。Array#join(sep) と同じ動作をします。

self + other -> Array

自身と other の内容を繋げた配列を生成して返します。

self - other -> Array

自身から other の要素を取り除いた配列を生成して返します。

self << obj -> self

指定された obj を自身の末尾に破壊的に追加します。

self <=> other -> -1 | 0 | 1 | nil

自身と other の各要素をそれぞれ順に <=> で比較していき、結果が 0 でなかった場合にその値を返します。各要素が等しく、配列の長さも等しい場合には 0 を返します。各要素が等しいまま一方だけ配列の末尾に達した時、自身の方が短ければ -1 をそうでなければ 1 を返します。 other に配列以外のオブジェクトを指定した場合は nil を返します。

self == other -> bool

自身と other の各要素をそれぞれ順に == で比較して、全要素が等しければ true を返します。そうでない場合には false を返します。

self[nth] -> object | nil
at(nth) -> object | nil

nth 番目の要素を返します。nth 番目の要素が存在しない時には nil を返します。

self[range] -> Array | nil

Range オブジェクト range の範囲にある要素からなる部分配列を返します。 range の begin が自身の範囲外となる時は nil を返します。ただし、begin が配列の長さに等しいときは空の配列を返します。 range の begin が end より後にある場合には空の配列を返します。

self[start, length] -> Array | nil

start 番目から length 個の要素を含む部分配列を返します。 start が自身の範囲外となる時は nil を返します。ただし、start が配列の長さに等しいときは空の配列を返します。 length が負の時は nil を返します。

self[nth] = val

nth 番目の要素を val に設定します。nth が配列の範囲を越える時には配列の長さを自動的に拡張し、拡張した領域を nil で初期化します。

self[range] = val

Range オブジェクト range の範囲にある要素を配列 val の内容に置換します。 range の first が自身の末尾を越える時には配列の長さを自動的に拡張し、拡張した領域を nil で初期化します。

self[start, length] = val

インデックス start から length 個の要素を配列 val の内容で置き換えます。 start が自身の末尾を越える時には配列の長さを自動的に拡張し、拡張した領域を nil で初期化します。

all? -> bool
all? {|item| ... } -> bool
all?(pattern) -> bool

すべての要素が真である場合に true を返します。偽である要素があれば、ただちに false を返します。

any? -> bool
any? {|item| ... } -> bool
any?(pattern) -> bool

すべての要素が偽である場合に false を返します。真である要素があれば、ただちに true を返します。

push(*obj) -> self
append(*obj) -> self

指定された obj を順番に配列の末尾に追加します。引数を指定しなければ何もしません。

assoc(key) -> Array | nil

配列の配列を検索して、その 0 番目の要素が key に == で等しい最初の要素を返します。該当する要素がなければ nil を返します。

bsearch { |x| ... } -> object | nil
bsearch -> Enumerator

ブロックの評価結果で範囲内の各要素の判定を行い、条件を満たす値を二分探索(計算量は O(log n))で検索します。要素が見つからない場合は nil を返します。self はあらかじめソートしておく必要があります。

bsearch_index { |x| ... } -> Integer | nil
bsearch_index -> Enumerator

ブロックの評価結果で範囲内の各要素の判定を行い、条件を満たす値の位置を二分探索(計算量は O(log n))で検索します。要素が見つからない場合は nil を返します。self はあらかじめソートしておく必要があります。

clear -> self

配列の要素をすべて削除して空にします。

clone -> Array
dup -> Array

レシーバと同じ内容を持つ新しい配列を返します。

collect -> Enumerator
map -> Enumerator
collect {|item| ... } -> [object]
map {|item| ... } -> [object]

各要素に対してブロックを評価した結果を全て含む配列を返します。

collect! {|item| ..} -> self
map! {|item| ..} -> self
collect! -> Enumerator
map! -> Enumerator

各要素を順番にブロックに渡して評価し、その結果で要素を置き換えます。

combination(n) {|c| block } -> self
combination(n) -> Enumerator

サイズ n の組み合わせをすべて生成し、それを引数としてブロックを実行します。

compact -> Array
compact! -> self | nil

compact は自身から nil を取り除いた配列を生成して返します。 compact! は自身から破壊的に nil を取り除き、変更が行われた場合は self を、そうでなければ nil を返します。

concat(other) -> self

配列 other を自身の末尾に破壊的に連結します。

concat(*other_arrays) -> self

other_arrays の要素を自身の末尾に破壊的に連結します。

count -> Integer
count(item) -> Integer
count {|obj| ... } -> Integer

レシーバの要素数を返します。

cycle(n=nil) {|obj| block } -> nil
cycle(n=nil) -> Enumerator

配列の全要素を n 回(nilの場合は無限に)繰り返しブロックを呼びだします。

delete(val) -> object | nil
delete(val) { ... } -> object

指定された val と == で等しい要素を自身からすべて取り除きます。等しい要素が見つかった場合は最後に見つかった要素を、そうでない場合には nil を返します。

delete_at(pos) -> object | nil

指定された位置 pos にある要素を取り除きそれを返します。 pos が範囲外であったら nil を返します。

delete_if {|x| ... } -> self
reject! {|x| ... } -> self | nil
delete_if -> Enumerator
reject! -> Enumerator

要素を順番にブロックに渡して評価し、その結果が真になった要素をすべて削除します。 delete_if は常に self を返しますが、reject! は要素が 1 つ以上削除されれば self を、 1 つも削除されなければ nil を返します。

difference(*other_arrays) -> Array

自身から other_arrays の要素を取り除いた配列を生成して返します。

dig(idx, ...) -> object | nil

self 以下のネストしたオブジェクトを dig メソッドで再帰的に参照して返します。途中のオブジェクトが nil であった場合は nil を返します。

drop(n) -> Array

配列の先頭の n 要素を捨てて、残りの要素を配列として返します。このメソッドは自身を破壊的に変更しません。

drop_while -> Enumerator
drop_while {|element| ... } -> Array

ブロックを評価して最初に偽となった要素の手前の要素まで捨て、残りの要素を配列として返します。このメソッドは自身を破壊的に変更しません。

each {|item| .... } -> self
each -> Enumerator

各要素に対してブロックを評価します。

each_index {|index| .... } -> self
each_index -> Enumerator

各要素のインデックスに対してブロックを評価します。

empty? -> bool

自身の要素の数が 0 の時に真を返します。そうでない場合に false を返します。

eql?(other) -> bool

自身と other の各要素をそれぞれ順に Object#eql? で比較して、全要素が等しければ真を返します。そうでない場合に false を返します。

fetch(nth) -> object
fetch(nth, ifnone) -> object
fetch(nth) {|nth| ... } -> object

nth 番目の要素を返します。

fill(val) -> self
fill {|index| ... } -> self

すべての要素に val をセットします。

fill(val, start, length = nil) -> self
fill(val, range) -> self
fill(start, length = nil) {|index| ... } -> self
fill(range) {|index| ... } -> self

配列の指定された範囲すべてに val をセットします。

select -> Enumerator
filter -> Enumerator
select {|item| ... } -> [object]
filter {|item| ... } -> [object]

各要素に対してブロックを評価した値が真であった要素を全て含む配列を返します。真になる要素がひとつもなかった場合は空の配列を返します。

select! {|item| block } -> self | nil
select! -> Enumerator
filter! {|item| block } -> self | nil
filter! -> Enumerator

ブロックが真を返した要素を残し、偽を返した要素を自身から削除します。変更があった場合は self を、変更がなかった場合には nil を返します。

find_index(val) -> Integer | nil
index(val) -> Integer | nil
find_index {|item| ...} -> Integer | nil
index {|item| ...} -> Integer | nil
find_index -> Enumerator
index -> Enumerator

条件に一致する最初の要素の位置を返します。

first -> object | nil

配列の先頭の要素を返します。要素がなければ nil を返します。

first(n) -> Array

先頭の n 要素を配列で返します。n は 0 以上でなければなりません。

flatten(lv = nil) -> Array
flatten!(lv = nil) -> self | nil

flatten は自身を再帰的に平坦化した配列を生成して返します。flatten! は自身を再帰的かつ破壊的に平坦化し、平坦化が行われた場合は self をそうでない場合は nil を返します。 lv が指定された場合、lv の深さまで再帰的に平坦化します。

hash -> Integer

自身のハッシュ値を整数で返します。ハッシュ値は自身の各要素のハッシュ値から計算されます。Array#eql? で比較して等しい配列同士は同じハッシュ値を返します。

include?(val) -> bool

配列が val と == で等しい要素を持つ時に真を返します。

insert(nth, *val) -> self

インデックス nth の要素の直前(nth が負の場合は直後)に第 2 引数以降の値を挿入します。引数 val を一つも指定しなければ何もしません。

to_s -> String
inspect -> String

自身の情報を人間に読みやすい文字列にして返します。

join(sep = $,) -> String

配列の要素を文字列 sep を間に挟んで連結した文字列を返します。

keep_if {|item| ... } -> self
keep_if -> Enumerator

ブロックが真を返した要素を残し、偽を返した要素を自身から削除します。

last -> object | nil

配列の末尾の要素を返します。配列が空のときは nil を返します。

last(n) -> Array

末尾の n 要素を配列で返します。n は 0 以上でなければなりません。

length -> Integer
size -> Integer

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

max -> object | nil
max(n) -> Array

最大の要素、もしくは最大の n 要素が降順に入った配列を返します。全要素が互いに <=> メソッドで比較できることを仮定しています。

max {|a, b| ... } -> object | nil
max(n) {|a, b| ... } -> Array

ブロックの評価結果で各要素の大小判定を行い、最大の要素、もしくは最大の n 要素が降順に入った配列を返します。引数を指定しない形式では要素が存在しなければ nil を返します。引数を指定する形式では、空の配列を返します。

min -> object | nil
min(n) -> Array

最小の要素、もしくは最小の n 要素が昇順で入った配列を返します。全要素が互いに <=> メソッドで比較できることを仮定しています。

min {|a, b| ... } -> object | nil
min(n) {|a, b| ... } -> Array

ブロックの評価結果で各要素の大小判定を行い、最小の要素、もしくは最小の n 要素が昇順で入った配列を返します。引数を指定しない形式では要素が存在しなければ nil を返します。引数を指定する形式では、空の配列を返します。

none? -> bool
none? {|obj| ... } -> bool
none?(pattern) -> bool

ブロックを指定しない場合は、 配列のすべての要素が偽であれば真を返します。そうでなければ偽を返します。

one? -> bool
one? {|obj| ... } -> bool
one?(pattern) -> bool

ブロックを指定しない場合は、 配列の要素のうちちょうど一つだけが真であれば、真を返します。そうでなければ偽を返します。

pack(template) -> String
pack(template, buffer: String.new) -> String

配列の内容を template で指定された文字列にしたがって、バイナリとしてパックした文字列を返します。

permutation(n = self.length) { |p| block } -> self
permutation(n = self.length) -> Enumerator

サイズ n の順列をすべて生成し,それを引数としてブロックを実行します。

pop -> object | nil
pop(n) -> Array

自身の末尾から要素を取り除いてそれを返します。引数を指定した場合はその個数だけ取り除き、それを配列で返します。

unshift(*obj) -> self
prepend(*obj) -> self

指定された obj を引数の最後から順番に配列の先頭に挿入します。引数を指定しなければ何もしません。

product(*lists) -> Array
product(*lists) { |e| ... } -> self

レシーバの配列と引数で与えられた配列(複数可)のそれぞれから要素を1 個ずつとって配列とし,それらのすべての配列を要素とする配列を返します。

rassoc(obj) -> Array | nil

自身が配列の配列であると仮定して、要素の配列でインデックス 1 の要素が obj に等しいものを検索し見つかった最初の要素を返します。該当する要素がなければ nil を返します。

reject -> Enumerator
reject {|item| ... } -> [object]

各要素に対してブロックを評価し、その値が偽であった要素を集めた新しい配列を返します。条件を反転させた select です。

repeated_combination(n) { |c| ... } -> self
repeated_combination(n) -> Enumerator

サイズ n の重複組み合わせをすべて生成し、それを引数としてブロックを実行します。

repeated_permutation(n) { |p| ... } -> self
repeated_permutation(n) -> Enumerator

サイズ n の重複順列をすべて生成し,それを引数としてブロックを実行します。

replace(another) -> self

配列の内容を配列 another の内容で置き換えます。

reverse -> Array
reverse! -> self

reverse は自身の要素を逆順に並べた新しい配列を生成して返します。 reverse! は自身を破壊的に並べ替えます。 reverse! は self を返します。

reverse_each {|item| ... } -> self
reverse_each -> Enumerator

各要素に対して逆順にブロックを評価します。

rindex(val) -> Integer | nil
rindex {|item| ... } -> Integer | nil
rindex -> Enumerator

指定された val と == で等しい最後の要素の位置を返します。等しい要素がひとつもなかった時には nil を返します。

rotate(cnt = 1) -> Array

cnt で指定したインデックスの要素が先頭になる配列を新しく作成します。 cnt より前の要素は末尾に移動します。cnt に負の数を指定した場合、逆の操作を行います。

rotate!(cnt = 1) -> self

cnt で指定したインデックスの要素が先頭になるように自身の順番を変更します。cnt より前の要素は末尾に移動します。cnt に負の数を指定した場合、逆の操作を行います。

sample -> object | nil
sample(n) -> Array
sample(random: Random) -> object | nil
sample(n, random: Random) -> Array

配列の要素を1個(引数を指定した場合は自身の要素数を越えない範囲で n 個) ランダムに選んで返します。

shift -> object | nil
shift(n) -> Array

配列の先頭の要素を取り除いてそれを返します。引数を指定した場合はその個数だけ取り除き、それを配列で返します。

shuffle -> Array
shuffle(random: Random) -> Array

配列の要素をランダムシャッフルして,その結果を配列として返します。

shuffle! -> self
shuffle!(random: Random) -> self

配列を破壊的にランダムシャッフルします。

slice(nth) -> object | nil

指定された自身の要素を返します。Array#[] と同じです。

slice(pos, len) -> Array | nil
slice(range) -> Array | nil

指定された自身の部分配列を返します。Array#[] と同じです。

slice!(nth) -> object | nil

指定した要素を自身から取り除き、取り除いた要素を返します。取り除く要素がなければ nil を返します。

slice!(start, len) -> Array | nil
slice!(range) -> Array | nil

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

sort -> Array
sort! -> self
sort {|a, b| ... } -> Array
sort! {|a, b| ... } -> self

配列の内容をソートします。要素同士の比較は <=> 演算子を使って行います。sort はソートされた配列を生成して返します。 sort! は self を破壊的にソートし、self を返します。

sort_by! -> Enumerator
sort_by! {|item| ... } -> self

sort_by の破壊的バージョンです。

sum(init=0) -> object
sum(init=0) {|e| expr } -> object

要素の合計を返します。例えば [e1, e2, e3].sum は init + e1 + e2 + e3 を返します。

take(n) -> Array

配列の先頭から n 要素を配列として返します。このメソッドは自身を破壊的に変更しません。

take_while -> Enumerator
take_while {|element| ... } -> Array

配列の要素を順に偽になるまでブロックで評価します。最初に偽になった要素の手前の要素までを配列として返します。このメソッドは自身を破壊的に変更しません。

to_a -> Array

self を返します。ただし、Array のサブクラスのインスタンスに対して呼ばれた時は、自身を Array に変換したものを返します。

to_ary -> self

self をそのまま返します。

to_h -> Hash
to_h { block } -> Hash

self を [key, value] のペアの配列として解析した結果を Hash にして返します。

transpose -> Array

自身を行列と見立てて、行列の転置(行と列の入れ換え)を行います。転置した配列を生成して返します。空の配列に対しては空の配列を生成して返します。

union(*other_arrays) -> Array

集合の和演算です。self と other_arrays の配列にどれかに含まれる要素を全て含む新しい配列を返します。重複する要素は取り除かれます。

uniq -> Array
uniq! -> self | nil
uniq {|item| ... } -> Array
uniq! {|item| ... } -> self | nil

uniq は配列から重複した要素を取り除いた新しい配列を返します。 uniq! は削除を破壊的に行い、削除が行われた場合は self を、そうでなければnil を返します。

values_at(*selectors) -> Array

引数で指定されたインデックスに対応する要素を配列で返します。インデックスに対応する値がなければ nil が要素になります。

zip(*lists) -> [[object]]
zip(*lists) {|v1, v2, ...| ...} -> nil

自身と引数に渡した配列の各要素からなる配列の配列を生成して返します。生成される配列の要素数は self の要素数と同じです。

self | other -> Array

集合の和演算です。両方の配列にいずれかに含まれる要素を全て含む新しい配列を返します。重複する要素は取り除かれます。

継承したメソッド

! != __id__ __send__ instance_eval instance_exec method_missing singleton_method_added singleton_method_removed singleton_method_undefined chain chunk chunk_while collect_concat detect each_cons each_entry each_slice each_with_index each_with_object entries filter grep grep_v group_by include? inject lazy max_by min_by minmax minmax_by partition slice_after slice_before slice_when sort_by to_set !~ === =~ _dump class define_singleton_method display enum_for equal? extend freeze frozen? initialize initialize_copy instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? itself marshal_dump marshal_load method methods nil? object_id pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods psych_to_yaml public_method public_methods public_send remove_instance_variable respond_to? respond_to_missing? send singleton_class singleton_method singleton_methods taint tainted? tap then to_hash to_int to_io to_proc to_regexp to_str trust untaint untrust untrusted? .yaml_tag ::ARGF ::ARGV ::DATA ::ENV ::FALSE ::NIL ::RUBY_COPYRIGHT ::RUBY_DESCRIPTION ::RUBY_ENGINE ::RUBY_ENGINE_VERSION ::RUBY_PATCHLEVEL ::RUBY_PLATFORM ::RUBY_RELEASE_DATE ::RUBY_REVISION ::RUBY_VERSION ::SCRIPT_LINES__ ::STDERR ::STDIN ::STDOUT ::TOPLEVEL_BINDING ::TRUE

追加されるメソッド

定義 説明 ライブラリ
abbrev(pattern = nil) -> Hash

self が文字列の配列の場合、self から一意に決まる短縮形を計算し、短縮形をキー、元の文字列を値とするハッシュを返します。

abbrev
shelljoin -> String

配列の各要素である文字列に対して、Bourne シェルのコマンドライン中で安全に使えるためのエスケープを適用し、空白文字を介してそれらを連結したコマンドライン文字列を生成します。

shellwords
to_csv(**options) -> String

CSV.generate_line(self, options) と同様です。

csv