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

Ruby中如何按对应位置顺序合并两个等长哈希数组

Ruby按索引顺序合并两个等长哈希数组

给定两个长度始终相等、元素按位置一一对应的哈希数组,可通过以下方式实现合并:

基础实现(兼容height为nil的场景)

直接按索引配对后合并哈希即可,代码如下:

array1 = [{:new_listing => "1", :item => "apple"}, {:new_listing => "2", :item => "bannana"}]
array2 = [{:height => "10"}, {:height => "12"}]

merged_array = array1.zip(array2).map { |hash1, hash2| hash1.merge(hash2) }

执行后得到的结果与预期完全一致:

[
  {:new_listing=>"1", :item=>"apple", :height=>"10"},
  {:new_listing=>"2", :item=>"bannana", :height=>"12"}
]

逻辑说明

  • array1.zip(array2) 会将两个数组同索引的元素两两配对,生成嵌套数组结构,每个子数组包含两个同位置的哈希
  • 遍历配对后的子数组,用Hash#merge方法将两个哈希的键值对合并为单个哈希
  • 若array2中存在{:height => nil}的元素,合并后对应位置的哈希会正常保留:height => nil的键值对,不会出现索引错位、数据丢失问题

可选优化(过滤nil值的height字段)

如果不需要保留值为nil的height键,可以在合并前对第二个哈希做紧凑处理,自动移除值为nil的键值对:

merged_array = array1.zip(array2).map { |hash1, hash2| hash1.merge(hash2.compact) }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:36:22