给定一个看起来像这样的哈希:
{
"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 }