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

从嵌套哈希数组中提取目标哈希值的问题求助

问题分析与解决

你用错方法了——select方法的作用是筛选出数组中所有满足条件的元素,返回一个数组,哪怕只有一个匹配项,也会被包裹在数组里,这就是测试里got是数组的原因。

题目要求返回单个哈希(找到的话)或者nil(没找到的话),你应该用find方法(它的别名是detect,功能完全一样):这个方法会遍历数组,返回第一个满足条件的元素,没有找到就返回nil,完美契合题目需求(而且提示里说了数组最多只有一个符合条件的哈希,不用担心多个匹配的情况)。

另外你代码里的块参数也有问题:数组的每个元素是一个哈希,所以块里应该接收单个参数(比如hash),而不是key, value——key, value是遍历哈希键值对时用的,这里遍历的是数组元素(哈希对象)。

正确实现代码

def find_favorite(array_of_hash_objects)
  array_of_hash_objects.find { |hash| hash[:is_my_favorite?] }
end

补充说明

  • 条件可以简化成hash[:is_my_favorite?],因为这个键对应的值本身就是布尔值,不需要再和true做比较;
  • 如果数组里没有is_my_favorite?为true的哈希,find会自动返回nil,正好符合题目要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:30:59