Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Ruby中使用max_by查找散列中最大数字的键_Ruby On Rails_Arrays_Ruby_Dictionary_Max - Fatal编程技术网

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。