0
1

More than 3 years have passed since last update.

RubyのArrayクラスのメソッドをたくさん使ってみた <part 2>

Last updated at Posted at 2019-12-10

part1に引き続きRubyのArrayクラスのメソッドを使っていきます。

part1はこちら

29.repeated_permutation

配列の要素から引数n個を選んだときの重複順列(順序あり、重複を許す組合せ)を数え上げる。

array = [1,2,3]

array.repeated_permutation(2) do |first, second|
  printf("(%d, %d) ", first, second)
end
(1, 1) (1, 2) (1, 3) (2, 1) (2, 2) (2, 3) (3, 1) (3, 2) (3, 3)

30.first

配列の最初の要素を返す。

array = [1,2,3]
p array.first
1

31.any?

ブロック引数itemに要素を入れながらブロックを繰り返し実行し、ブロックが真が返したときは繰り返しを中断してtrueを返す。

array = [1,2,3]
result = array.any? do |item|
  item > 4
end

p result
false
array = [1,2,3]
result = array.any? do |item|
  item > 1
end

p result
true

32.zip

配列の要素を引数の配列other_arrayの要素と組み合わせ、配列の配列を作成して返す。

array = [1,2,3]
array_2 = [4,5,6]
array_3 = [7,8,9]

p array.zip(array_2, array_3)
[[1, 4, 6], [2, 5, 7], [3, nil, 8]]

33.take

配列の先頭から引数n個の要素を取り出して、新しい配列を作成して返す。

array = [1,2,3,4,5,6]

p array.take(3)
[1, 2, 3]

34.take_while

ブロックの戻り値が真である要素を配列の先頭から取り出し、新しい配列に入れて返す。ブロック引数itemに要素を入れながら、ブロックの戻り値が真である間はブロックを繰り返す。ブロックが偽を返すと繰り返しを中断して、それより前の要素からなる配列を作成する。

array = [1,2,10,11,5,6]

new_array = array.take_while do |item|
  item < 7
end

p new_array
[1, 2]

35.drop

配列の先頭から引数n個の要素を取り除き、残りで新しい配列を作成して返す。

array = [1,2,10,11,5,6]
p array.drop(4)
[5, 6]

36.drop_while

ブロックの戻り値が真である要素を配列の先頭から取り除き、残りの要素を集めた新しい配列を返す。ブロック引数itemに要素を入れながらブロックを繰り返し実行し、ブロックが偽を返すと繰り返しを中断して、それ以降の要素からなる配列を作成する。

array = [100,2,10,11,5,6]
new_array = array.drop_while do |item|
  item % 2 == 0
end

p new_array
[11, 5, 6]

37.cycle

配列の要素の数だけブロックを繰り返し実行し、その繰り返しを引数n回続ける。

array = [1,2,3,4,5,6]
new_array = array.cycle(3) do |item|
  print "#{item} "
end
1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6

38.uniq

配列の中で重複する要素を削除した新しい配列を返す。

array = [1,5,3,4,5,4]

p array.uniq
[1, 5, 3, 4]

39.|

2つの配列の和集合を作る。

array = [1,5,3,4,5,4]
array_2 = [34,67,89,5,1] 

p array | array_2
[1, 5, 3, 4, 34, 67, 89]

40.insert

引数indexで指定した位置に引数objを要素として挿入する。

array = [1,2,3,4,5,6]

p array.insert(3, 1000)
1, 2, 3, 1000, 4, 5, 6]

41.index

配列から引数objと同じ要素を探し、その位置を整数で返す。

array = [1,2,3,4,5,6]

p array.index(6)
5

42.clear

要素をすべて削除し、配列を空にする。

array = [1,2,3,4,5,6]

p array.clear
[]

43.rindex

配列の末尾から順に引数objと同じ要素を探し、その位置(インデックス)を整数で返す。

array = [1,2,6,3,4,5,6]

p array.rindex(6)
6

44.replace

配列の内容を引数other_arrayのもので置き換える。

array = [1,2,6,3,4,5,6]

p array.replace(["cat","dog"])
["cat", "dog"]

45.empty?

配列が空であればtrue、1つ以上の要素があればfalseを返す。

array = [1,2,6,3,4,5,6]
array_2 = []

p array.empty?
p array_2.empty?
false
true

46.reverse

配列の要素の順番を反転させた新しい配列を返す。

array = [1,2,6,3,4,5,6]

p array.reverse
[6, 5, 4, 3, 6, 2, 1]

47.concat

配列arrayの末尾に引数の配列other_arrayを結合する。

array = [1,2,6,3,4,5,6]
array_2 = ["dog","cat"]

p array.concat(array_2)
[1, 2, 6, 3, 4, 5, 6, "dog", "cat"]

48.max

要素の最大値を調べる。

array = [1,2,6,3,4,5,6]

p array.max
6

49.delete

配列から引数objと同じ要素を探して、すべて削除する。

array = [1,2,6,3,4,5,6]
array.delete(6)
p array
[1, 2, 3, 4, 5]

50.slice

配列から引数で指定した位置の要素を取り出して返す。

array = [1,2,6,3,4,5,6]
p array.slice(1)
p array.slice(2..4)
p array.slice(1, 4)
2
[6, 3, 4]
[2, 6, 3, 4]

まとめ

50個で終了にします。意外と細かいものまであり、かっこよくArrayが使いこなせそうです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1