私は配列とハッシュを持って追加はn個の要素
L = [] H = {3=>"a", 2=>"b", 1=>"c"}
そして私は回数n個の要素を取得するためのキーを反復が発生し、アレイのn倍にその要素を追加します
結果
L = ['a', 'a', 'a', 'b', 'b', 'c']
注入(または私は、多くの場合、Rubyコードで参照する他の方法)でこれを書くための良い方法は何ですか?デビッドの答え@
私は配列とハッシュを持って追加はn個の要素
L = [] H = {3=>"a", 2=>"b", 1=>"c"}
そして私は回数n個の要素を取得するためのキーを反復が発生し、アレイのn倍にその要素を追加します
結果
L = ['a', 'a', 'a', 'b', 'b', 'c']
注入(または私は、多くの場合、Rubyコードで参照する他の方法)でこれを書くための良い方法は何ですか?デビッドの答え@
array = hash.flat_map { |k,v| [v]*k }
Aah、 'flat_map'、あなたが*できないものは何ですか? –
前に 'flat_map'を見たことがありません。 –
@JörgWMittag:それはまだあなたをピナ・コラダにすることはできません。私はMatzがそれに取り組んでいると思う。 –
は、あなたのニーズに合わせてスポットオンです。
# Modify the array in-place, or…
my_array.concat([o]*n)
# …alternatively create a new modified array
new_array = my_array + [o]*n
ただ、サイドノート:一般的に、しかし、あなたは、のうちの1つを介して既存のアレイに oをのn回オブジェクトを追加することができハッシュはRuby 1.9の前に挿入順序を保持(とではありません一般的に、ハッシュテーブルは順序付けられていないデータ構造です)、これは最初の目的のための正しいデータ構造ではないかもしれません:) –
要素はソート可能なオブジェクトなので、後でソートすることができます私は注文が必要です。 – MxyL
十分に公正で、私はちょうどそれを指摘したかった:) –