如何将键数组转换为值数组?

时间:2015-03-28 15:21:00

标签: ruby arrays hash

我有像

这样的哈希
hash = { 'burger': 2, 'kebab': 5, 'pizza': 10 }

我有一个像

这样的键的数组
['burger', 'burger', 'pizza']

如何创建相应值的数组? inject方法是将值数组加在一起的最佳方法吗?

2 个答案:

答案 0 :(得分:4)

实际上,您甚至不需要准备密钥阵列。

  • 获取密钥:hash.keys
  • 获取值:hash.values

如果您只想按特定顺序排列某些值或值,那么

a = [:burger, :pizza]
hash.values_at(*a) # => [2, 10]

答案 1 :(得分:0)

您可以使用map,因为您特别想要按特定顺序想要数组中特定键的值。否则,您可以使用hash.values

arr = ['burger', 'burger', 'pizza']
results = arr.map { |key| hash[key] }