我需要一些看似简单但让我感到困惑的事情的帮助。尝试编写一些模糊匹配方法来处理根据需要计算的值与选择列表中实际可用的值之间的格式差异。
值(value)(期权行使价)始终是计算得出的 float ,例如 85.0
或 Int。
该数组包含字符串形式的数字,不可预测的增量或它们是否会显示为某个小数(包括额外的零,如 5.50
)或无小数(如 85
),例如:
select_list = ["77.5", "80", "82.5", "85", "87.5", "90", "95", "100", "105"]
我不确定如何编写简单的一行或两行代码来返回数组中出现的最接近的匹配元素(按数值)。例如,如果 select_list.contains? 85.0
返回 “85”
实际上,选择选项来自 Watir::Webdriver browser.select_list(:id, "lstStrike0_1")
HTML 对象,其可见文本(不是 HTML 值)是那些数字;也许有更直接的方法来调用 browser.select_list(:id, "lstStrike0_1").select X
而不必在 Watir 中弄清楚如何将所有这些选择转换为 Ruby 数组?
最佳答案
xs = ["77.5", "80", "82.5", "85", "87.5", "90", "95", "100", "105"]
xs.min_by { |x| (x.to_f - 82.4).abs }
#=> "82.5"
关于ruby - 如何在数字数组中找到最佳匹配元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476878/