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

Ruby嵌套Hash格式化方法:实现相同id下合并names数组

实现嵌套Hash结构的解决方案

你可以直接调整哈希生成逻辑,在遍历数据时直接组装嵌套结构,性能更高逻辑也更清晰,优化后代码如下:

# 预加载关联的ListImportGroup数据,避免N+1查询问题
imports = ListImports.includes(:list_import_groups).limit(20).order(created_at: :DESC)
pub_hash_true = []
pub_hash_false = []

imports.each do |import|
  # 直接组装符合要求的嵌套结构
  current_item = {
    id: import.id,
    trans: import.trans,
    accepted: import.amount,
    names: import.list_import_groups.map do |group|
      { name: group.name, amount: group.amount }
    end
  }
  # 按accepted字段值分发到对应数组,和原有逻辑保持一致
  current_item[:accepted] ? pub_hash_true << current_item : pub_hash_false << current_item
end

如果你不想修改原有生成逻辑,只想对已经得到的平级哈希数组做格式化,可以用group_by方法按id聚合,示例如下:

# 以平级的pub_hash_false为例,pub_hash_true处理逻辑完全相同
formatted_false = pub_hash_false.group_by { |item| item[:id] }.values.map do |same_id_items|
  base_info = same_id_items.first
  {
    id: base_info[:id],
    accepted: base_info[:accepted],
    trans: base_info[:trans],
    names: same_id_items.map { |i| { name: i[:name], amount: i[:amount] } }
  }
end

处理后得到的pub_hash_true、pub_hash_false或者格式化后的数组,就完全符合你预期的嵌套结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:54:04