Arrays 迭代哈希数组,并将特定哈希值的值相加
如果您有一个哈希数组,例如:Arrays 迭代哈希数组,并将特定哈希值的值相加,arrays,ruby,hash,Arrays,Ruby,Hash,如果您有一个哈希数组,例如: t = [{'pies' => 1}, {'burgers' => 1}, {'chips' => 1}] 将1添加到具有特定键(如'pies')的哈希值的有效且可读的方法是什么?以下是一种基于所需键增加数组哈希值的方法: t = [{ 'pies' => 1 }, { 'burgers' => 1 }, { 'chips' => 1 }] t.each { |hash| hash['pies'] += 1 if hash.k
t = [{'pies' => 1}, {'burgers' => 1}, {'chips' => 1}]
将
1
添加到具有特定键(如'pies'
)的哈希值的有效且可读的方法是什么?以下是一种基于所需键增加数组哈希值的方法:
t = [{ 'pies' => 1 }, { 'burgers' => 1 }, { 'chips' => 1 }]
t.each { |hash| hash['pies'] += 1 if hash.key?('pies') }
# => [{"pies"=>2}, {"burgers"=>1}, {"chips"=>1}]
希望这有帮助 以下是一种基于所需键增加数组哈希值的方法:
t = [{ 'pies' => 1 }, { 'burgers' => 1 }, { 'chips' => 1 }]
t.each { |hash| hash['pies'] += 1 if hash.key?('pies') }
# => [{"pies"=>2}, {"burgers"=>1}, {"chips"=>1}]
希望这有帮助 如果您知道只有一个散列可以接受密钥“pies”,那么您可以使用find并增加它的值,如:
array = [{ 'pies' => 1 }, { 'burgers' => 1 }, { 'chips' => 1 }]
pies_hash = array.find { |hash| hash['pies'] }
pies_hash['pies'] += 1
p array
# [{"pies"=>2}, {"burgers"=>1}, {"chips"=>1}]
将尝试查找满足块的元素,并在返回true时停止迭代。如果您知道只有一个哈希值可以接受键“pies”,则可以使用find并增加其值,如:
array = [{ 'pies' => 1 }, { 'burgers' => 1 }, { 'chips' => 1 }]
pies_hash = array.find { |hash| hash['pies'] }
pies_hash['pies'] += 1
p array
# [{"pies"=>2}, {"burgers"=>1}, {"chips"=>1}]
将尝试查找满足块的元素,并在返回true时停止迭代。您使用了错误的数据结构。我建议使用散列 菜单上的每个项目只能有一个计数(或销售),即每个项目都是唯一的。这可以用具有唯一键(项)及其相应值(计数)的散列来建模 然后我们可以访问密钥并添加到计数中:
t['pies'] += 1
t #=> t = {'pies' => 2, 'burgers' => 1, 'chips' => 1}
您使用了错误的数据结构。我建议使用散列 菜单上的每个项目只能有一个计数(或销售),即每个项目都是唯一的。这可以用具有唯一键(项)及其相应值(计数)的散列来建模 然后我们可以访问密钥并添加到计数中:
t['pies'] += 1
t #=> t = {'pies' => 2, 'burgers' => 1, 'chips' => 1}
抱歉我稍微编辑了这个问题,但是谢谢没有担心,更新了新版本问题的答案抱歉我稍微编辑了这个问题,但是谢谢没有担心,更新了新版本问题的答案为什么你有一个哈希数组而不仅仅是一个哈希?为什么你有一个哈希数组而不仅仅是一个哈希?