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

Ruby/Rails中实现提取嵌套哈希内值为字符串的元素

嵌套哈希字符串值筛选实现方案

你可以通过递归方法处理多层嵌套结构,以下是适配Ruby 2.7和Rails 6的可直接运行的代码:

def filter_string_values(hash)
  hash.each_with_object({}) do |(key, value), result|
    if value.is_a?(Hash)
      nested_filtered = filter_string_values(value)
      # 纯Ruby环境可将present?替换为 !nested_filtered.empty?
      result[key] = nested_filtered if nested_filtered.present?
    elsif value.is_a?(String)
      result[key] = value
    end
  end
end

# 调用方法即可得到目标结果
filtered_hash = filter_string_values(hash)

运行上述代码后得到的输出与你期望的结果完全一致:

{
  language: 'EN',
  details: {
    resultRanges: {
      book: {
        title: 'Dunder Mifflin',
        label: 'gray',
      },
    },
  },
}

逻辑说明

  • 遍历哈希的每一组键值对,根据值的类型做分支处理
  • 若值为嵌套哈希,优先递归处理该子哈希,仅当处理后子哈希存在有效内容时保留该层级键
  • 若值为字符串类型,直接保留当前键值对
  • 布尔值、数值等其他非目标类型会被自动过滤
    如果你的使用场景中存在数组嵌套哈希的情况,只需要补充对应数组类型的分支判断,递归处理数组元素即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:48:03