2013-06-19 27 views
0

我是新来的Ruby和没有与哈希太多经验的数组,我有一个微博名为变量,它是一个哈希这样:如何保存的信息,从哈希未来在Ruby中

{"statuses"=>[{"metadata"=>{"result_type"=>"recent", "iso_language_code"=>"tl"}, "lang"=>"tl"}]} 

我想将信息数组作为一个单独的变量保存在数组中。我将如何去做这件事?

+0

该数组应该看起来像什么? –

+0

应该看起来像: [{“metadata”=> {“result_type”=>“recent”,“iso_language_code”=>“tl”},“lang”=>“tl”}] – cmart

+0

我认为你应该考虑把整个变成另一个..这将比数组简单.. – sethi

回答

0

如果你有一个哈希像这样:

hash = {:numbers => [1,2,3,4]} 

而且你需要在阵列捕捉到一个新的变量。你可以只访问密钥并将其分配给一个新的变量,像这样:

one_to_five = hash[:numbers] 

但是,请注意,新的变量实际持有的数组,它是在散。所以改变散列的数组会改变新变量的数组。

hash[:numbers] << 6 
puts one_to_five #=> [1,2,3,4,5,6] 

如果使用dup,它会创建数组的副本所以这将是两个不同的阵列。

one_to_five = hash[:numbers].dup 
hash[:numbers] << 6 
puts one_to_five #=> [1,2,3,4,5] 

所以,你的情况:

hash = {'statuses' => [{"metadata"=>{"result_type"=>"recent", "iso_language_code"=>"tl"}, "lang"=>"tl"}]} 
new_array = hash['statuses'].dup 

但是,它会看到它是什么你希望你的代码来完成,或者至少得到多一点的上下文,因为很有趣这可能不是实现最终目标的最佳途径。您可以使用ArraysHashes(和Enumerable)做很多事情,我鼓励您阅读关于它们的文档。

1

哈希的有2种很不错的方法,

hash.values 
hash.keys 

你的情况 -

h = {"statuses"=>[{"metadata"=>{"result_type"=>"recent", "iso_language_code"=>"tl"}, "lang"=>"tl"}]} 
p h.values 
p.keys 

每种类型的这些输出数组。这可能是你想要的。

此外,这个问题将很好地关闭。 1谷歌搜索报道了几个哈希到数组问题。

Ruby Hash to array of values
Converting Ruby hashes to arrays

+0

hash.values不起作用,因为它创建了一个新的数组数组。然后我不能有额外的数组 – cmart

+0

循环! :) – sircapsalot