You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby如何对哈希中results_by_time的所有amount值求和?

如何对Ruby哈希中动态数量的amount值求和?

你可以通过遍历results_by_time数组中的所有元素,提取每个元素里的amount值并累加,不管数组长度如何变化都能适用。

方法一:直接使用sum结合块

利用Ruby的Enumerable#sum方法,直接在遍历过程中完成转换和累加:

total_amount = value[:results_by_time].sum do |time_entry|
  time_entry.dig(:total, 'BlendedCost', :amount).to_f
end

puts total_amount # 输出结果:130.9420454444

方法二:先提取所有值再求和

如果需要保留单独的amount数组,可以先用map提取所有值,再调用sum:

all_amounts = value[:results_by_time].map do |entry|
  entry.dig(:total, 'BlendedCost', :amount).to_f
end

total = all_amounts.sum

说明

  • dig方法会安全地逐层获取嵌套哈希的值,如果某一层不存在(比如某个time_entry没有BlendedCost),会返回nil,调用to_f后会转为0,避免报错。
  • 这两种方法都不需要关心results_by_time的元素数量,自动遍历所有元素完成求和。

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:01:10