0

我是 ruby​​ 新手,对哈希没有太多经验,我有一个名为 tweets 的变量,它是这样的哈希:

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

我想将信息数组保存为数组中的单独变量。我该怎么办?

4

2 回答 2

1

Hash 有 2 个非常好的方法,

hash.values
hash.keys

在你的情况下 -

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

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

此外,这个问题将很好地结束。1 Google 搜索报告了几个 Hash to Array SO 问题。

Ruby 哈希到值数组
将 Ruby 哈希转换为数组

于 2013-06-19T14:59:27.323 回答
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 )做很多事情,我鼓励您通读有关它们的文档。

于 2013-06-19T15:19:02.777 回答