簡體   English   中英

Ruby數組哈希

[英]Ruby hash of arrays

所以我有一個像這樣的哈希:

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

我想獲取整個數組,而不僅僅是值。
看來這應該工作:

hash.each{|key,value| value}

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

但是我得到的是array-1、2、3的各個元素。我知道我可以進行hash.values運算,但這給出了沒有鍵的數組數組。 我需要鍵/值(數組)對。 有什么想法嗎?

您所描述的確實按預期工作:

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

您可以張貼一段代碼說明您的特定問題嗎?

您的構造確實會為您提供整個陣列:

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

不知道我是否完全理解,但是您是否要求這樣(使用.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]]]

嘗試這個:

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

它返回:

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

這是你想要的嗎?

hash.map{|key,value| [key]+value }
=> [["a", 1, 2, 3], ["b", 18, 21, 9]]

如果你有這個

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

並且您只需要使用鍵訪問器就可以返回整個數組。 例如

hash[:a] = [1, 2, 3]
hash[:b] = [18, 21, 9]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM