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,不会抛出NoMethodErrordig方法可以安全逐层取hash的key,对应key不存在时直接返回nilcompact方法用于过滤数组中的nil值,避免部分元素缺失name_printed键时结果出现nil- 末尾的
|| []做最终兜底,确保哪怕所有前置调用都返回nil,最终结果也是空数组,符合输出格式要求
内容的提问来源于stack exchange,提问作者Vinirdishtith Rana
相关产品推荐
相关产品推荐

