所以我试图将Hash拆分为两个Arrays,一个包含键,另一个包含值。
到目前为止,我有:
hash = { Matsumoto: "Ruby", Ritchie: "C", Backus: "Fortran", McCarthy: "Lisp" }
我可以用键或这样的数组来制作数组:
hash.map { |creator, proglang| creator }
但是我无法制作两个数组,一个包含键和键,其中一个包含值。我玩了很多方法,但我很茫然。
谢谢。
答案 0 :(得分:4)
keys, values = hash.keys, hash.values
> keys
# => [:Matsumoto, :Ritchie, :Backus, :McCarthy]
> values
# => ["Ruby", "C", "Fortran", "Lisp"]
答案 1 :(得分:1)
您可以参考Hash类方法:
hash.keys
hash.values
分别返回键和值的数组
请参阅 http://www.ruby-doc.org/core-2.1.0/Hash.html 了解更多详情
答案 2 :(得分:0)
keys, values = hash.to_a.transpose
#=> [[:Matsumoto, :Ritchie, :Backus , :McCarthy],
# ["Ruby" , "C" , "Fortran", "Lisp" ]]
也有效,但为此任务提供了keys()
和values()
。