Ruby on rails 在Ruby中使用max_by查找散列中最大数字的键
我需要在数组中找到权重最大的类别。我在环境变量中定义权重:Ruby on rails 在Ruby中使用max_by查找散列中最大数字的键,ruby-on-rails,arrays,ruby,dictionary,max,Ruby On Rails,Arrays,Ruby,Dictionary,Max,我需要在数组中找到权重最大的类别。我在环境变量中定义权重: CATEGORY_WEIGHTS = { "small_standard": 0, "large_standard": 1, "small_oversize": 2, "medium_oversize": 3, "large_oversize": 4 } 在本例中,最大的加权类别为大尺寸 我正在检查的数组如下所示: categories = [ "small_oversize", "large_standa
CATEGORY_WEIGHTS = {
"small_standard": 0,
"large_standard": 1,
"small_oversize": 2,
"medium_oversize": 3,
"large_oversize": 4
}
在本例中,最大的加权类别为大尺寸
我正在检查的数组如下所示:
categories = [
"small_oversize",
"large_standard",
"small_standard",
"large_oversize"
]
但当我这样做时,它不会返回正确的值:
max_category = categories.max_by{ |cat| CATEGORY_WEIGHTS[cat] }
它返回小尺寸而不是大尺寸
我在哪里误入歧途了?您在哈希中使用了符号,但试图用字符串访问它。将其更改为:
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]
您正在哈希中使用符号,但尝试使用字符串访问它。将其更改为:
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]
是的,很好。非常感谢。当它允许我回答的时候,我会接受的!是的,很好。非常感谢。当它允许我回答的时候,我会接受的!在散列声明中,x:y变成:x=>y。对于实际字符串键:x=>y。在散列声明中,x:y变成:x=>y。对于实际字符串键:x=>y。