我正在一个项目上,我尝试按特定值过滤用户的哈希值,有没有办法做到这一点而无需多循环?
这是针对个人项目的,我尝试获取不受一个称为wc_max
的值限制的用户的哈希。
这是我得到的数据的样本:
我有这样的用户数据:
...
[
{id: 1, wc_max: 5, active: true},
{id: 2, wc_max: 15, active: true},
{id: 3, wc_max: 13, active: true},
]
...
和数字数组:
...
[14, 19, 20]
...
我期望获得一个新的用户数组,其中wc_max
严格优于该数字数组中的一个。
对于我给出的示例,我希望获得ID为2的用户,因为其wc_max
(15)严格优于一个数组的数字(14)。
如果您有任何迹象或信息可以实现此目标,或者需要更多信息,请告诉我。
答案 0 :(得分:1)
获取数组的最小值,并在用户的数组上使用select
:
> u
=> [{:id=>1, :wc_max=>5, :active=>true}, {:id=>2, :wc_max=>15, :active=>true}, {:id=>3, :wc_max=>13, :active=>true}]
> a
=> [14, 19, 20]
> min = a.min
> u.select { |i| i[:wc_max] > min }
=> [{:id=>2, :wc_max=>15, :active=>true}]