给定一个如下所示的哈希:
{
"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}
通常,您可以简单地使用flatten来合并嵌套数组。因此,如果您想更新现有的哈希,您可以这样做
your_hash.each { |key, value| your_hash[key] = value.flatten.count }
否则我会说你做的
new_hash = {}
your_hash.each { |key, value| new_hash[key] = value.flatten.count }