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

如何在Ruby中合并同名称哈希数组并对数量字段求和

Ruby 合并同名称哈希数组并对数量求和

给定如下Ruby哈希数组:

items = [{name: 'item_1', qty: 1, unit_price: 5},
{name: 'item_1', qty: 2, unit_price: 5},
{name: 'item_2', qty: 3, unit_price: 10},
{name: 'item_2', qty: 2, unit_price: 10}]

需要将具有相同name的哈希合并为一个,同时对qty字段求和,预期输出如下:

[{name: 'item_1', qty: 3, unit_price: 5},
{name: 'item_2', qty: 5, unit_price: 10}]

解决方案

可以通过group_by结合map实现需求:

items.group_by { |item| item[:name] }.map do |name, group|
  {
    name: name,
    qty: group.sum { |item| item[:qty] },
    unit_price: group.first[:unit_price]
  }
end

说明

  1. 使用group_by { |item| item[:name] }将原数组按name分组,得到以name为键、对应哈希数组为值的新哈希。
  2. 遍历分组后的哈希,对每个分组:
    • 保留name字段;
    • 通过group.sum { |item| item[:qty] }计算该分组的总数量;
    • 取分组中第一个元素的unit_price(假设同名称的哈希unit_price一致,符合示例场景)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:52:36