繁体   English   中英

Ruby Min_by逻辑

[英]Ruby min_by logic

请帮助我找出min_by行为。

我有一个包含两列(raw_value,百分位)的“标准”表。 经过一些计算后,我得到了calculated_result,我的目标是找到与我的calculated_result最接近的raw_value的百分位数。 我的方法如下:

raw = Norma.where(name: name).map(&:raw_value).min_by { |x| (x.to_f - value.to_f).abs }

它有效,但是我无法弄清楚所有逻辑,这就是我的意思:

arr = [1,2,3,4,5]
arr.min_by {|x| (x - 3.5).abs}
=> 3

在这种情况下,我们有两个相同的差(0.5到3以及到4),所以我的问题是,如果发现多个最小值,选择结果的规则是什么。

祝您有个愉快的一天! :)

如果值相等,则第一个最小值计数。

尝试使用[5,4,3,2,1],您会看到结果为4。

这与#index一致,该索引返回与值匹配的第一个索引位置。

认为这是...

temp_arr = arr.map{ |x| (x-3.5).abs }
arr[temp_arr.index(temp_arr.min)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM