2012-04-19 14 views
1

、元の順序を失うことなく、配列のマージは、私はのように見えるアレイ構造を持つルビー

a.inject([]){|k,v| v | k} # but order gets changed 
=> [["d", "D"], ["e", "E"], ["f", "F"], ["a", "A"], ["b", "B"], ["c", "C"]] 

どのようにして注文を失うことなく希望の結果を得ることができますか?

ヒント、コメント、提案をしてください。

Thnx。

+0

あなたは*セット単位組合*内側の配列または* CONCATENATE *彼らにしたいですか?あなたは、[[['a'、 'A']]、[['a'、 'A']]] 'に何をしたいですか? –

+0

[['a'、 'A']]その場合の出力が望ましいです。 –

+0

私はwise unionを設定したがっています。私はkの代わりにv | kを入れてばかげたのですか?v –

答えて

1

はこれを試してみてください:

a.inject([]){|k,v| k|v} 
+3

または、短い、 'a.inject(&:|)'(笑、面白い帽子で混乱した笑顔!) –

+0

はい。私はあなたの答えを得る前に、これを試しました。私の悪い。これは愚かな質問でした。 –

+0

@MladenJablanović、このa.inject(&:|)の仕組みを簡単に説明できますか?私はそれを知っている、あなたはそれぞれの要素の略として '&'を使用します。 –

5

array.flattenはパラメータを取ります。

a.flatten(1) #[["a", "A"], ["b", "B"], ["c", "C"], ["d", "D"], ["e", "E"], ["f", "F"]] 
+0

今日も新しいことを学んだよ:) –

+0

うわー!それは素晴らしい解決策です。私はパラメータなしでフラット化しようとしています。これは、 "a"、 "A"、 "b"、 "C"、 "C"、 "d"、 "D"、 "e" "、" f "、" F "] ここでパラメータの必要性を説明してください。 thnx –

+0

あなたのソリューションは正常に動作します。 thnx –

関連する問題