如何计算哈希数组中的值数组中的项目

时间:2019-02-04 02:10:23

标签: arrays ruby hash

我有一个哈希数组,其中包含一组项作为哈希值。结构如下:

arr = [
  {:title => "String1", :link => ["URL1", "URL2"]},
  {:title => "String2", :link => ["URL3", "URL4", "URL5"]}
]

我想添加一个键值对,对每个:link中的项目进行计数,如下所示:

arr = [
  {:title => "String1", :link => ["URL1", "URL2"], :link_count => 2},
  {:title => "String2", :link => ["URL3", "URL4", "URL5"]}, :link_count => 3 
]

我可以使用以下方法来计算每个:link的计数:

arr.map{|x| x[:link].count}

但是我不能将计数保留为新密钥。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以通过Array#each进行以下操作,

> arr.each { |h| h[:link_count] = h[:link].count }
# => [{:title=>"String1", :link=>["URL1", "URL2"], :link_count=>2}, {:title=>"String2", :link=>["URL3", "URL4", "URL5"], :link_count=>3}]  

答案 1 :(得分:0)

您可以使用merge!方法,使用新的更改来更改原始数组。

arr.map { |x| x.merge!({ link_count: x[:link].count }) }