4

配列とハッシュがあります

L = []
H = {3=>"a", 2=>"b", 1=>"c"}

したがって、キーを繰り返し処理して、要素が発生する回数 n を取得し、その要素を配列に n 回追加します。

結果

L = ['a', 'a', 'a', 'b', 'b', 'c']

これをinject(またはRubyコードでよく見かける他の方法)で書く良い方法は何ですか?

4

2 に答える 2

17
array = hash.flat_map { |k,v| [v]*k }
于 2012-05-13T15:50:12.143 に答える
2

@Davidの答えは、あなたのニーズにぴったりです。ただし、一般に、次のいずれかを使用して、オブジェクトoを既存の配列にn回追加できます。

# Modify the array in-place, or…
my_array.concat( [o]*n )

# …alternatively create a new modified array
new_array = my_array + [o]*n
于 2012-05-13T18:36:03.427 に答える