0

だから私はこのようなハッシュを持っています:

hash  = { "a"=>[1, 2, 3], "b"=>[18, 21, 9] }

値だけでなく、配列全体を取得したいと思います。
これはうまくいくはずです:

hash.each{|key,value| value}

[1, 2, 3]
[18, 21, 9]

しかし、配列 1、2、3 の個々の要素が得られます。hash.values を実行できることはわかっていますが、キーのない配列の配列が得られます。キー/値 (配列) のペアが必要です。考え?

4

6 に答える 6

1

What you are describing does work as intended:

=> {"a"=>[1, 2, 3], "b"=>[18, 21, 9]}
[4] pry(main)> hash.each { |k,v| puts v.length }
3
3

Can you post a snippet of code illustrating your specific problem?

于 2013-03-07T01:45:46.270 に答える
0

あなたの構造あなたに配列全体を与えます:

irb(main):001:0> hash = { "a" => [1, 2, 3], "b" => [18, 21, 9] }
=> {"a"=>[1, 2, 3], "b"=>[18, 21, 9]}
irb(main):002:0> hash.each{ |key,value| puts value.class.name }
Array
Array

おそらくputs、配列にしようとしているだけですか?その場合、デフォルトでは各要素が別々の行に配置されます。

irb(main):003:0> puts [1,2,3]
1
2
3
于 2013-03-07T01:45:54.843 に答える
0

私が完全に理解したかどうかはわかりませんが、次のようなことを求めていますか ( を使用.to_a):

hash = { "a"=>[1, 2, 3], "b"=>[18, 21, 9] }
 => {"a"=>[1, 2, 3], "b"=>[18, 21, 9]}
arr = hash.to_a
 => [["a", [1, 2, 3]], ["b", [18, 21, 9]]]
于 2013-03-07T01:48:22.413 に答える
0

これを試して:

hash.map { |k,v| { k => v} }

戻り値:

{"a"=>[1, 2, 3]}
{"b"=>[18, 21, 9]}
于 2013-03-07T01:53:01.630 に答える
0

これは、あなたの望むことですか?

hash.map{|key,value| [key]+value }
=> [["a", 1, 2, 3], ["b", 18, 21, 9]]
于 2013-03-07T01:54:10.047 に答える
0

これがあれば

hash = { "a"=>[1, 2, 3], "b"=>[18, 21, 9] }

配列全体を返すには、キー アクセサーを使用するだけです。例えば

hash[:a] = [1, 2, 3]
hash[:b] = [18, 21, 9]
于 2014-02-05T15:56:53.387 に答える