在 rails 中,如果值是嵌套数组,如何对哈希值求和



给定一个看起来像这样的哈希:

{
   "one":[ [ 46, 51 ], [ 46 ], [ 48 ] ],
   "two":[ [ 50, 51 ], [ 46, 51 ], [ 46, 51 ] ]
}

如何在 Rails 中映射它,以便我们可以获得所有数组中的项目总数?这样我们就会得到这个结果:

{
   "one": 4,
   "two": 6
}

我对使用map有点困惑,因为它不允许我保留密钥。

您也可以使用它来保留密钥

hash.map{|key, val| [key, val.flatten.count]}.to_h

使用 Hash#transform_values

hash.transform_values { |v| v.flatten.count }
#=> {:one=>4, :two=>6}

通常,您可以简单地使用平展来合并嵌套数组。因此,如果您想更新现有的哈希值,您可以这样做

your_hash.each { |key, value| your_hash[key] = value.flatten.count }

否则我会说你这样做

new_hash = {}
your_hash.each { |key, value| new_hash[key] = value.flatten.count }

最新更新