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

Ruby如何获取指定键序列中对应哈希值非nil的首个键?

Ruby惯用写法:找到键序列中对应哈希值非nil的首个键

必须有啊!你原来的select { ... }.first确实有点啰嗦——select会把整个序列里符合条件的键都捞出来,但我们其实只需要第一个匹配的,用find(或者它的别名detect)就完美解决,而且效率还更高:它找到第一个符合条件的元素就立刻停住,不用遍历完整个序列。

纯Ruby实现

直接上代码:

hash = {a:1, b:false, c:nil}
[:c, :b, :a].find { |key| hash[key] != nil }
# 返回 :b

或者换个更语义明确的写法,一眼就能看出是判断值不为nil:

[:c, :b, :a].find { |k| !hash[k].nil? }

小提醒

要是你在Rails项目里写代码,可别顺手用present?哦!因为false.present?会返回false,这样代码就会跳过:b直接返回:a,不符合你“只要值不是nil就行(哪怕是false)”的需求。

内容的提问来源于stack exchange,提问作者a tired guy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:28:54