我需要在数组中找到包含"最大"的类别。重量。我在环境变量中定义权重:
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
。
我哪里误入歧途?
答案 0 :(得分:4)
您在哈希中使用符号,但是您尝试使用字符串访问它。将其更改为:
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]