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

Ruby on Rails:如何用nil安全导航从hash中提取指定键值存入数组

实现方法(针对Ruby 2.3及以上版本)

你可以使用Ruby内置的nil安全导航符&.完成需求,全程不会因为中间值为nil抛出异常:

# 示例hash
data = {
  "show_data_on_file": "Yes",
  "employees_names_printed_on_badges": [
    {
      "name_printed": "John",
      "badge_id": 12160060
    },
    {
      "name_printed": "Tom",
      "badge_id": 12160080
    }
  ]
}

# 核心提取逻辑
name_list = data&.dig("employees_names_printed_on_badges")&.map { |item| item&.dig("name_printed") }&.compact || []

运行后name_list的结果为 ["John", "Tom"]。

逻辑说明

  • &. 为nil安全导航操作符,链式调用中只要任意节点返回nil,整个表达式直接返回nil,不会抛出NoMethodError
  • dig方法可以安全逐层取hash的key,对应key不存在时直接返回nil
  • compact方法用于过滤数组中的nil值,避免部分元素缺失name_printed键时结果出现nil
  • 末尾的|| []做最终兜底,确保哪怕所有前置调用都返回nil,最终结果也是空数组,符合输出格式要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:36:03