[英]How to get the minimum value of an array, based on comparing more than one block using 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.