我有一个哈希数组:
array_hash = [{product: 'A', qty: 1}, {product: 'B', qty: 2}]
我想获取第一个键"product"
的值。
我通过以下代码获得了预期的哈希值:
get_first_hash = array_hash[0]
# => {product: 'A', qty: 1}
但是,此代码返回nil
:
get_value = get_first_hash['product']
# => nil
我希望有人能告诉我这件事。
答案 0 :(得分:2)
希望这足够!
array_hash.first[:product]
如果您只想第二个,
array_hash.second[:product]
此外,.first只是做array_hash [0]的助手,但是得到nil的问题是您需要在Ruby中用:symbol表示它。
答案 1 :(得分:1)
我猜你习惯在Ruby on Rails中使用Hash,该子类将Ruby附带的Hash
类子类化为HashWithIndifferentAccess
,而您通常从不强迫将其视为开发人员(在Rails中)。还应该注意的是,Rails directly modifies是Ruby的基类Hash
,因此在Rails中(或者特别是在加载ActiveSupport时),您实际上有更多可用空间。>
Ruby(纯),但是在散列中的键方面并没有摆弄。这样可以使用一些功能强大的应用程序-请记住,Ruby中的所有内容都是一个对象。
因此,'string'
和:symbol
既是对象,又是不同的对象。您甚至可以将Class
用作哈希中的密钥。
{
Object => :object_symbol,
Class => :class_symbol
}
因此,当您尝试访问哈希中某个键后面的值时,请确保使用完全相同的键本身。
在上面的示例中,您使用符号product
作为密钥。 Ruby使用:
来表示这一点。
{
product: 'A',
qty: 1
}
这相当于说
{
:product => 'A',
:qty => 1
}
所以您要呼叫的是get_value = get_first_hash[:product]