ruby-on-rails - 在 Ruby 中使用 max_by 查找哈希中最大数字的键

标签 ruby-on-rails arrays ruby dictionary max

我需要在数组中找到拥有“最大”权重的类别。我在环境变量中定义权重:

CATEGORY_WEIGHTS = {
  "small_standard": 0,
  "large_standard": 1,
  "small_oversize": 2,
  "medium_oversize": 3,
  "large_oversize": 4
}

在此示例中,“最大”加权类别将是 large_oversize

我正在检查的数组如下所示:

categories = [
  "small_oversize",
  "large_standard",
  "small_standard",
  "large_oversize"
]

但是当我这样做时,它没有返回正确的值:

max_category = categories.max_by{ |cat| CATEGORY_WEIGHTS[cat] }

它返回 small_oversize 而不是 large_oversize

我哪里误入歧途了?

最佳答案

您在散列中使用符号,但您正尝试使用字符串访问它。将其更改为:

max_category = categories.max_by{|cat| CATEGORY_WEIGHTS[cat.to_sym]}

这里是您可以更简单地做到这一点的方法:

category_weights = {
  small_standard: 0,
  large_standard: 1,
  small_oversize: 2,
  medium_oversize: 3,
  large_oversize: 4
}

category = category_weights.max_by{|c, w| w}[0]

关于ruby-on-rails - 在 Ruby 中使用 max_by 查找哈希中最大数字的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45826329/

相关文章:

javascript - 如何跟踪在网站上花费的时间

ruby-on-rails - 为什么我的 rails3 beta4 模型中出现 "SystemStackError: stack level too deep"

javascript - 如何在javascript中设置rails背景图片url?

javascript - 数组 "property lists"叫什么,它们与简单对象有何不同?

ruby - cancan,每个用户一个角色 - 有什么方法可以在不重复这么多文本的情况下设置能力?

ruby - ruby中的 `+`

ruby-on-rails - Ruby on Rails ActiveRecord::PendingMigrationError

python - Numpy修改数组到位?

c++ - C++如何从函数返回对象数组

ruby-on-rails - 使用 Rails 保存 XML 文件