首先,创建哈希符号的键,而不是常量。类型值相同:
@sku_menu = [
{ type: :small, :sku => 11, price: 5.00 },
{ type: :medium, :sku => 22, price: 7.50 },
{ type: :large, :sku => 33, price: 9.75 },
]
接下来,我们选择我们想要的值:
# Gives an array of just the 'large' items
larges = @sku_menu.select{ |hash| hash[:type]==:large }
# Gives just the hash with the desired SKU
sku22 = @sku_menu.find{ |hash| hash[:sku]==22 }
# Gives an array of hashes
expensive = @sku_menu.select{ |hash| hash[:price] > 7 }
# Gives an array of hashes with the specified SKUs
selected = @sku_menu.select{ |hash| [11,22].include?( hash[:sku] ) }
现在,如果您想更轻松地按 SKU 查找商品,请尝试将其设为 Hash 而不是 Array:
@sku_menu = {
11 => { type: :small, :sku => 11, price: 5.00 },
22 => { type: :medium, :sku => 22, price: 7.50 },
33 => { type: :large, :sku => 33, price: 9.75 },
}
sku11 = @sku_menu[11]
有了这个你仍然可以select想要的项目(但语法略有不同):
# Gives an array of just the 'large' items
larges = @sku_menu.values.select{ |hash| hash[:type]==:large }
# …alternatively
larges = @sku_menu.select{ |sku,hash| hash[:type]==:large }.values