簡體   English   中英

Ruby Hash到值數組

[英]Ruby Hash to array of values

我有這個:

hash  = { "a"=>["a", "b", "c"], "b"=>["b", "c"] } 

我想談談: [["a","b","c"],["b","c"]]

這似乎應該可以工作,但它不會:

hash.each{|key,value| value}
=> {"a"=>["a", "b", "c"], "b"=>["b", "c"]} 

有什么建議?

還有點簡單....

>> hash = { "a"=>["a", "b", "c"], "b"=>["b", "c"] }
=> {"a"=>["a", "b", "c"], "b"=>["b", "c"]}
>> hash.values
=> [["a", "b", "c"], ["b", "c"]]

Ruby doc在這里

我會用:

hash.map { |key, value| value }
hash.collect { |k, v| v }
#returns [["a", "b", "c"], ["b", "c"]] 

Enumerable#collect接受一個塊,並在枚舉的每個元素上返回一次運行塊的結果數組。 所以這段代碼只是忽略了鍵並返回了所有值的數組。

Enumerable模塊非常棒。 了解它可以為您節省大量時間和大量代碼。

hash  = { :a => ["a", "b", "c"], :b => ["b", "c"] }
hash.values #=> [["a","b","c"],["b","c"]]

它很簡單

hash.values
#=> [["a", "b", "c"], ["b", "c"]]

這將返回一個填充了hash值的新數組

如果你想存儲新的數組呢

array_of_values = hash.values
#=> [["a", "b", "c"], ["b", "c"]]

array_of_values
 #=> [["a", "b", "c"], ["b", "c"]]

還有這一個:

hash = { foo: "bar", baz: "qux" }
hash.map(&:last) #=> ["bar", "qux"]

為什么會這樣:

&調用對象上的to_proc ,並將其作為塊傳遞給方法。

something {|i| i.foo }
something(&:foo)

暫無
暫無

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

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