Ruby 如何将键数组转换为值数组?
我有一个像这样的杂烩Ruby 如何将键数组转换为值数组?,ruby,arrays,hash,Ruby,Arrays,Hash,我有一个像这样的杂烩 hash = { 'burger': 2, 'kebab': 5, 'pizza': 10 } 我有一系列的按键,比如 ['burger', 'burger', 'pizza'] 如何创建相应值的数组?inject方法是将值数组相加的最佳方法吗?实际上,您甚至不需要准备键数组 要获取密钥:hash.keys 要获取值:hash.values 如果您只需要某些值或某些顺序的值,则 a = [:burger, :pizza] hash.values_at(*a) # =
hash = { 'burger': 2, 'kebab': 5, 'pizza': 10 }
我有一系列的按键,比如
['burger', 'burger', 'pizza']
如何创建相应值的数组?
inject
方法是将值数组相加的最佳方法吗?实际上,您甚至不需要准备键数组
- 要获取密钥:
hash.keys
- 要获取值:
hash.values
a = [:burger, :pizza]
hash.values_at(*a) # => [2, 10]
您可以使用
map
,正如您特别提到的,您希望数组中特定键的值按特定顺序排列。否则,您可以使用hash.values
arr = ['burger', 'burger', 'pizza']
results = arr.map { |key| hash[key] }
哈希语法是错误的。如果使用旧版本的Ruby,那么作为键数组的内容是错误的。所以我不能使用字符串作为键名?我必须使用符号吗?好极了know@Mundedx是的,它是冒号,使关键符号。非常感谢您的帮助,我想我可以把这个很好地纳入我的项目!!要回答@Munded的最后一个问题,请添加
.reduce(:+)
以获得总和。