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

Ruby实现:嵌套JSON按产品名去重并筛选最低rate

Ruby处理产品最低费率问题解决方案

实现步骤

  • 扁平化所有section下的产品数据,同时绑定所属section信息
  • 按产品名称分组
  • 每组内筛选出费率最低的条目
  • 整理成目标格式数组

示例代码

假设你的JSON解析后得到的哈希是json_data:

# 若原始是JSON字符串,先解析为Ruby哈希
# json_data = JSON.parse(your_json_string)

# 扁平化所有产品,携带所属section信息
all_products = json_data['data'].flat_map do |section|
  section['products'].map do |product|
    {
      name: product['product'],
      rate: product['rate'].to_f, # 转成数值避免字符串排序错误
      section: section # 按需可改为section的特定字段,如section['name']
    }
  end
end

# 按产品名分组,取每组中费率最低的条目
result = all_products.group_by { |p| p[:name] }.map do |name, items|
  min_item = items.min_by { |item| item[:rate] }
  # 按需求整理输出格式
  {
    product_name: name,
    lowest_rate: min_item[:rate],
    related_section: min_item[:section]
  }
end

# 查看结果
pp result

关键说明

  • flat_map用于拆解嵌套的products数组,同时给每个产品绑定所属section
  • group_by确保同一产品的所有条目归为一组
  • min_by直接根据rate数值筛选最低费率条目,代码简洁高效
  • 若rate字段是字符串类型,必须先转成数值(to_f或to_i)再比较,否则会出现字符串排序逻辑错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:20:34