在rails中,如果值是嵌套数组,如何总计哈希值

问题描述 投票:0回答:3

给定一个如下所示的哈希:

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

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

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

我对使用map感到有点困惑,因为它不会让我保留键。

ruby-on-rails
3个回答
3
投票

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

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

2
投票

使用Hash#transform_values

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

1
投票

通常,您可以简单地使用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 }
© www.soinside.com 2019 - 2024. All rights reserved.