You need to enable JavaScript to run this app. 如何从Ruby嵌套hash中提取所有值并拼接为连续字符串
优惠活动
大模型
产品
解决方案
定价
更多

如何从Ruby嵌套hash中提取所有值并拼接为连续字符串

Ruby on Rails 嵌套Hash字符串拼接实现方案

核心思路为递归遍历嵌套Hash的所有值,按顺序收集字符串类型值后拼接即可,以下是可直接使用的实现:

基础递归实现

def concat_nested_hash_strings(hash)
  result = []
  hash.each_value do |value|
    if value.is_a?(Hash)
      # 遇到嵌套Hash则递归提取
      result << concat_nested_hash_strings(value)
    elsif value.is_a?(String)
      # 遇到字符串直接加入结果集
      result << value
    end
  end
  result.join
end

测试示例

针对你给出的输入测试:
h = {a:"da", b:{c:"test", e:{f:"bird"}}, d:"duck"}
调用concat_nested_hash_strings(h)即可得到返回值 "datestbirdduck",完全符合预期。

精简写法

如果需要更短的实现,可结合flat_map实现:

def concat_nested_hash_strings(hash)
  hash.values.flat_map do |v|
    v.is_a?(Hash) ? concat_nested_hash_strings(v) : v.is_a?(String) ? v : nil
  end.compact.join
end

拓展说明

  • Ruby 1.9+版本的Hash默认保留键的插入顺序,遍历顺序和你定义Hash时的顺序完全一致,不会出现拼接顺序错乱的问题
  • 如果需要同时收集数字、符号等其他类型的值,只需把字符串判断逻辑改为v.to_s即可适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 00:06:06