Edited at

[Ruby] 便利な組み込みクラスのメソッド達(Array編)

More than 5 years have passed since last update.


概要

パーフェクトRubyを読んでいて便利だと思ったもの一覧です。

Enumerable編

http://qiita.com/kidachi_/items/a00558cfb0a6a3e23f4b

Hash編

http://qiita.com/kidachi_/items/651b5b5580be40ad047e

String編

http://qiita.com/kidachi_/items/7b355eb355b2d1390cf5


配列の整形


compact

配列からnilを除去。

> [false, nil, 0, '', []].compact

=> [false, 0, "", []]


uniq

配列から重複要素を排除。

> %w(Ruby Python Java Ruby Python Java).uniq

=> ["Ruby", "Python", "Java"]


flatten

多次元配列を一次元にして返却。

> arr = ["Ruby", ["Python", ["Java", "C"]]]

> arr.flatten
=> ["Ruby", "Python", "Java", "C"]


transpose

二次元配列を行列と見立てて、行と列の入れ替えを行う。

> arr = [[1, 2, 3], ["Ruby", "Python", "Java"]]

> arr.transpose
=> [[1, "Ruby"], [2, "Python"], [3, "Java"]]


zip

二つの配列を行と列を入れ替えた上で結合する。

> arr1 = [1, 2, 3]

> arr2 = ["Ruby", "Python", "Java"]
> arr1.zip(arr2)
=> [[1, "Ruby"], [2, "Python"], [3, "Java"]]


要素の連結


join

要素を連結する。

引数に文字列を与えた場合は、それをセパレータとして連結する。

> %w(Ruby Python Java).join

=> "RubyPythonJava"
> %w(Ruby Python Java).join(', ')
=> "Ruby, Python, Java"


要素の取得


sample

与えた引数だけ、ランダムに要素を取り出す。

> arr = %w(Ruby Python Java C Smalltalk Brainfuck)

=> ["Ruby", "Python", "Java", "C", "Smalltalk", "Brainfuck"]
> arr.sample
=> "Python"
> arr.sample
=> "Brainfuck"
> arr.sample
=> "C"
> arr.sample(2)
=> ["Ruby", "Smalltalk"]
> arr.sample(2)
=> ["Smalltalk", "C"]


assoc

多次元配列から、キーを指定して要素を取り出す。

> arr = [[:ruby, 1], [:python, 2], [:java, 3]]

=> [[:ruby, 1], [:python, 2], [:java, 3]]
> arr.assoc(:ruby)
=> [:ruby, 1]


要素の追加と削除


pop, push, shift, unshift

> arr = ["Ruby", "Python", "Java"]

=> ["Ruby", "Python", "Java"]
# 末尾の要素を取り出す
> arr.pop
=> "Java"
# 破壊的
> arr
=> ["Ruby", "Python"]
# 末尾に要素を追加する
> arr.push("Java")
=> ["Ruby", "Python", "Java"]
# 破壊的
> arr
=> ["Ruby", "Python", "Java"]

# 先頭の要素を取り出す
> arr.shift
=> "Ruby"
# 破壊的
> arr
=> ["Python", "Java"]
# 先頭に要素を追加する
> arr.unshift("Ruby")
=> ["Ruby", "Python", "Java"]
# 破壊的
> arr
=> ["Ruby", "Python", "Java"]

※ スタック(FirstIn, LastOut/先入れ後出し)は

pop/pushもしくはshift/unshift

※ キュー(FirstIn, FirstOut/先入れ先出し)は

pop/unshiftもしくはpush/shift