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

Ruby遍历哈希替换指定值为fills数组对应值的实现方法

简洁实现方案

codes和fills按索引一一对应,实现非常简单,两种常用写法都没有冗余逻辑:

方案1:构建哈希时直接替换(推荐,无多余遍历)

不需要先生成空哈希填充再二次修改,一步生成目标结果:

codes = ['AA', 'BB']
fills = ['FOUR', 'FIVE']
main_hash = {'AA' => ['1', 'TEXT', 'ONE'],
             'BB' => ['2', 'TEXT', 'TWO'],
             'CC' => ['3', 'TEXT', 'THREE']}

hash = codes.zip(fills).to_h do |key, replace_val|
  arr = main_hash[key].dup
  arr[2] = replace_val # 2为待替换位置的索引,对应示例里的第三个元素
  [key, arr]
end

运行后得到的hash和预期结构完全一致。代码中dup的作用是避免修改main_hash内的原始数组,产生意外副作用,如果不需要保留main_hash原始值可以省略。

方案2:初始哈希生成后批量替换

如果你已经完成了初始哈希的填充,只需要按索引对齐遍历替换即可:

# 已完成初始hash填充的逻辑
hash = {}
codes.each { |key| hash[key] = main_hash[key].dup }

# 批量替换指定位置值
codes.each_with_index do |key, idx|
  hash[key][2] = fills[idx]
end

两种写法时间复杂度均为O(n)(n为codes数组长度),无性能差异,根据自身代码流程选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:18:18