轉換一個哈希數組我是相當新的Ruby和我有一個哈希看起來像這樣:紅寶石
{ ["key1", "key2"] => 5, ["key1", "key3"] => 2, ... }
,我想將它轉化成一個數組,看起來像
[ ["key1", "key2", 5], ["key1", "key3", 2] ... ]
我該怎麼做呢?
轉換一個哈希數組我是相當新的Ruby和我有一個哈希看起來像這樣:紅寶石
{ ["key1", "key2"] => 5, ["key1", "key3"] => 2, ... }
,我想將它轉化成一個數組,看起來像
[ ["key1", "key2", 5], ["key1", "key3", 2] ... ]
我該怎麼做呢?
簡單:
hash.collect{|k, v| k << v}
,如果你需要原始哈希不變:
hash.collect{|k, v| k + [v]}
to_a正是這麼做的。
{ ["key1", "key2"] => 5, ["key1", "key3"] => 2}.to_a
不,看看所需的輸出:'[[「key1」,「key2」,5],[「key1」,「key3」,2] ...]'。 – tokland 2012-07-06 09:32:51
另一種方式可以是:
hash.map(&:flatten)
# => [["key1", "key2", 5], ["key1", "key3", 2]]
你的第一個(或該版本的吧'地圖{| K,V | K + [V]}')沒有裂傷原哈希的鍵。 – 2012-07-06 07:56:29
是的,正確的,加上兩個答案,以防他需要散列。 :) – Matzi 2012-07-06 07:59:54
挑剔:變量命名*非常*重要。如果你寫'k'你說的是「單數/單項」。如果寫'ks'你說的是「複數/集合」。 – tokland 2012-07-06 08:00:12