Array
nil
を取り除いた配列を返す。
[1, nil, 2, nil, 3, nil].compact
# => [1, 2, 3]
配列を連結する。
[1, 2, 3].concat([4, 5, 6])
# => [1, 2, 3, 4, 5, 6]
concat
で連結する場合:配列自身に連結する
a = [1, 2, 3]; p a.concat([4, 5, 6]); p a;
----------
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6]
----------
+
で連結する場合:連結した結果を返す(配列自身は変更しない)
a = [1, 2, 3]; p (a + [4, 5, 6]); p a;
----------
[1, 2, 3, 4, 5, 6]
[1, 2, 3]
----------
指定した値と等しい要素を全て削除する。
a = [1, 2, 3, 2, 1]
a.delete(1)
# => 1
p a
# => [2, 3, 2]
条件が真になった要素を削除する。
delete
と違いdelete_if
の結果はself
を返す。
a = [0, 1, 2, 3, 4, 5]
a.delete_if{ |x| x % 2 == 0 }
# => [1, 3, 5]
p a
# => [1, 3, 5]
配列の中に等しい値があればtrueを返す。
['a', 'b', 'c'].include?('a')
# => true
['a', 'b', 'c'].include?('z')
# => false
条件に一致する最初の要素の位置を返す。
['a', 'b', 'c'].index('c')
# => 2
['a', 'b', 'c'].index('z')
# => nil
配列を指定した文字列で連結して返す。
['a', 'b', 'c'].join('-')
# => "a-b-c"
配列を逆順にして返す。
reverse!
の場合は破壊的に自身の配列を逆順に変更する。
['a', 'b', 'c'].reverse
# => ["c", "b", "a"]
配列の中から指定した個数分、ランダムに抽出して返す。
['a', 'b', 'c'].sample
# => "c"
['a', 'b', 'c'].sample(2)
# => ["b", "a"]
条件に一致した要素を抽出する。
[1, 2, 3, 4, 5].select{ |x| x >= 3 }
# => [3, 4, 5]
配列の要素をシャッフルして返す。
[1, 2, 3, 4, 5].shuffle
# => [3, 5, 1, 2, 4]
指定した部分から抽出した部分配列を返す。
[1, 2, 3, 4, 5].slice(0, 3)
# => [1, 2, 3]
[1, 2, 3, 4, 5].slice(2..4)
# => [3, 4, 5]
要素を整列して返す。
['e', 'd', 'a', 'b', 'c'].sort
# => ["a", "b", "c", "d", "e"]
重複を除いた配列を返す。
[2, 1, 5, 1, 3, 2, 4, 3].uniq
# => [2, 1, 5, 3, 4]
Hash
キーと値をブロックに渡す。
{ a: 1, b: 2, c: 3 }.each{ |key, value| puts "#{key} : #{value}" }
----------
a : 1
b : 2
c : 3
----------
キーをブロックに渡す。
{ a: 1, b: 2, c: 3 }.each_key{ |key| p key }
----------
:a
:b
:c
----------
値をブロックに渡す。
{ a: 1, b: 2, c: 3 }.each_value{ |value| p value }
----------
1
2
3
----------
指定した値がハッシュのキーとして存在すればtrueを返す。
{ a: 1, b: 2, c: 3 }.has_key?(:b)
# => true
{ a: 1, b: 2, c: 3 }.has_key?(:z)
# => false
指定した値がハッシュの値として存在すればtrueを返す。
{ a: 1, b: 2, c: 3 }.has_value?(3)
# => true
{ a: 1, b: 2, c: 3 }.has_value?(30)
# => false
全てのキーを配列として返す。
{ a: 1, b: 2, c: 3 }.keys
# => [:a, :b, :c]
全ての値を配列として返す。
{ a: 1, b: 2, c: 3 }.values
# => [1, 2, 3]
Enumerator
['a', 'b', 'c', 'd', 'e'].each.with_index(1){ |value, index| puts "#{index} : #{value}" }
----------
1 : a
2 : b
3 : c
4 : d
5 : e
----------
全ての要素が真であればtrueを返す。
[1, 2, 3, 4, 5].all?
# => true
[1, 2, 3, 4, 5, nil].all?
# => false
[1, 2, 3, 4, 5].all?{ |x| x < 10 }
# => true
[1, 2, 3, 4, 5].all?{ |x| x < 5 }
# => false
全ての要素が偽であればtrueを返す。
[nil, false].none?
# => true
[1, 2, 3, 4, 5].none?{ |x| x < 0 }
# => true
1つでも真があればtrueを返す。
[1, 2, 3, 4, 5].any?{ |x| x >= 5 }
# => true
[1, 2, 3, 4, 5].any?{ |x| x > 5 }
# => false
[1, 2, 3, 4, 5].one?{ |x| x == 4 }
# => true
[1, 2, 3, 4, 5].one?{ |x| x <= 4 }
# => false
要素数を返す。
[1, 2, 3, 4, 5].count
# => 5
指定した個数で区切りブロックに渡す。
[1, 2, 3, 4, 5].each_slice(2){ |x| p x }
----------
[1, 2]
[3, 4]
[5]
----------
指定した個数で区切り、1要素ずつズラしながらブロックに渡す。
[1, 2, 3, 4, 5].each_cons(2){ |x| p x }
----------
[1, 2]
[2, 3]
[3, 4]
[4, 5]
----------
条件に一致する値と条件に一致しない値をそれぞれ別々の配列に振り分ける。
(1..10).partition{ |x| x % 3 == 0 }
# => [[3, 6, 9], [1, 2, 4, 5, 7, 8, 10]]
指定した個数分、先頭から抽出する。
[1, 2, 3, 4, 5].take(3)
# => [1, 2, 3]
評価結果をキーに、評価された要素を配列にしたハッシュを返す。
(1..10).group_by{ |x| x % 3 }
# => {1=>[1, 4, 7, 10], 2=>[2, 5, 8], 0=>[3, 6, 9]}
最小の値を返す。
[1, 2, 3, 4, 5].min
# => 1
最大の値を返す。
[1, 2, 3, 4, 5].max
# => 5
最小の値と最大の値を配列にして返す。
[1, 2, 3, 4, 5].minmax
# => [1, 5]