Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何将键数组转换为值数组?_Ruby_Arrays_Hash - Fatal编程技术网

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(:+)
以获得总和。