私はこれをよりクリーンで最適な方法で行う方法を考えていました:
次の構造のオブジェクトがあります。
{
"125": 2,
"439": 3,
"560": 1,
"999": 2,
...
}
すべてのキーを、その値で示される回数だけ繰り返すフラットな配列を作成したいと思います。また、キー(文字列)を整数に変換するためのボーナスポイント。この例では、結果の配列は次のようになります。
[ 125, 125, 439, 439, 439, 560, 999, 999 ]
私はいくつかの方法を試しましたが、それらはすべて過剰に設計されているように見えます。確かにもっと簡単な方法があります。これは私がアンダースコアで得たものです(そしてそれは文字列の配列も整数も返します):
_.compact(_.flatten(_.map(files, function(num, id) {
return new Array(num+1).join('$'+id).split('$')
})))
これを達成する方法はたくさんあることを私は知っています。クリーンで迅速な方法だけが必要です。Ruby開発者になると、次のように簡単になります。
> files = {"125" => 2, "439" => 3, "560" => 1, "999" => 2}
=> {"125"=>2, "439"=>3, "560"=>1, "999"=>2}
> files.map {|key, value| [key.to_i] * value}.flatten
=> [125, 125, 439, 439, 439, 560, 999, 999]
前もって感謝します。