从哈希中获取Ruby数组中的第一项

And*_*rew 12 ruby

我有一个Ruby哈希,看起来像这样:

h = {"side1"=>["green", "Green"], "side2"=>["verde", "Verde"]}
Run Code Online (Sandbox Code Playgroud)

如何获取散列中特定键的第一个(或最后一个)项?

BF4*_*BF4 9

实际上,你的问题中的示例伪代码是正确的.

为你的哈希

h = {
   "side1" => ["green", "Green"], 
   "side2" => ["verde", "Verde"]
}
Run Code Online (Sandbox Code Playgroud)

键是'side1''side2'(它们的值为hashrocket)

所以,h['side2'].first说对于key的值'side2',获取值中的第一个元素["verde", "Verde"],即数组. h['side2'][0]也会有用.别名first是一种方便的方法.

要获取数组的最后一个元素而不必知道它有多大,请使用负索引.例如h['side2'][-1],这相当于h['side2'][1]在这种情况下.

请注意,散列中的键特别关于它是字符串还是符号.这h[:side2]将返回零,因为密钥尚未设置.Rails有一个类HashWithIndifferentAccess将符号和字符串视为等效键.

编辑

我应该提到我测试了我的答案irb.irb是一种测试你的想法的好方法,这些想法可能会起作用,也可能起作用.在终端提示符下,键入irb,输入并使用ruby进行播放.


小智 6

我遇到了类似的情况,我从哈希中任意想要一些测试代码的"第一"条目.这不是这个问题的确切含义,但它出现在我跑的搜索中,因此可能会对其他人也这样做.

当然"第一项"在散列中是任意的,但是keys方法将返回按一些魔法排序的所有键的列表.如果您喜欢该排序顺序,那么您可以使用"第一"方法

h[h.keys.first]
Run Code Online (Sandbox Code Playgroud)


Moh*_*ami 6

任何哈希都有你可以简单的键和值

hash.values.first
hash.values.last
hash.keys.first
hash.keys.last
Run Code Online (Sandbox Code Playgroud)

因此,您将拥有所需的值数组,以便在第一个或最后一个