1


0

私はこのような構造をしています:

{:foo => ['foo1'、 'foo2']、:bar => ['bar1']}

私はこれを次のように変身させたいと思います。

[[:foo, "foo1"], [:foo, "foo2"], [:bar, "bar1"]]

私の現在の解決策は必須です。

result = [] h.each do | k、v | v.each do | value |結果<< [k、value] end end

これはうまくいきますが、これを書くためのもっと洗練された方法があると確信しています、しかし私はそれを理解することができません。 関数指向のソリューションがどのようになるのか知りたいのですが。

2 Answer


7


h.inject([])do | arr、(k、v)| arr v.map {| x | [k、x]}終わり


0


このようなものはどうですか? たくさんの配列を一緒に追加することができればいいのにとは思いませんが、私は自分で実装しました。

class Array def concatArrays#配列の配列を連結します。inject([]){| acc、x |} acc x}終了終了

h.collect {| k、v | v.collect {| value | [k、value]}}。concatArrays