Rubyの配列扱うときのtips

RubyもしくはRailsで配列を扱う時のtips

Rubyのメソッド

each_with_index

eachと同じ感じなんだけど、何番目かっていう数字を一緒に取れる。ループの外で i = 0 と定義して、ループの中で i += 1 とかやらなくておk。ブロックの第一引数が配列の要素で、第二引数が配列のインデックスです。

%w(a b c d).each_with_index do |value, index|
  p value
  p index
end

実行結果

"a"
0
"b"
1
"c"
2
"d"
3

all?

ブロックをとって、各要素に対して条件を指定して、全てが true だったら true を返す。

[1,2,3,4].all? do |value|
  value > 0
end

実行結果

true

any?

ブロックをとって、各要素に対して条件を指定して、1つでも true だったら true を返す。

[1,2,3,4].any? do |value|
  value == 3
end

実行結果

true

配列から、特定の物を取り除く時に簡単に使える。例えば、配列をjoinしたいけど、nilは除いてからjoinしたい時とか。

irb(main):021:0> [1,2,nil,4,5,nil] - [nil]
=> [1, 2, 4, 5]

compact

配列から、nilを取り除いた配列を返す。破壊的メソッドは compact!

irb(main):021:0> [1,2,nil,4,5,nil].compact
=> [1, 2, 4, 5]

uniq

配列から重複したものを取り除きたい時。破壊的メソッドは uniq!

irb(main):022:0> [1,1,2,3,4,2,5].uniq
=> [1, 2, 3, 4, 5]

collect (map)

配列の各要素をブロックに渡し、各結果を配列にして返します。破壊的メソッドは collect! 。map と collect は同じ。

irb(main):001:0> [1,2,3,4,5].collect do |i|
irb(main):002:1*   i * 10
irb(main):003:1> end
=> [10, 20, 30, 40, 50]

index

引数の値と一致する最初の位置を返します。

irb(main):004:0> %w(a b c d e).index('c')
=> 2

Railsのメソッド

in_groups_of

引数に個数を取って、その個数ごとの配列を生成して、その配列を返してくれる。半端な部分はnilで埋めてくれる。table組むときとか超便利。日本語むずい。

 [1,2,3,4,5,6,7].in_groups_of(3) do |group|
?> p group
>> end
[1, 2, 3]
[4, 5, 6]
[7, nil, nil]
=> nil

また今度追記するわ。

コメントを残す

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