我有一个哈希数组,其中包含一组项作为哈希值。结构如下:
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}
但是我不能将计数保留为新密钥。有什么想法吗?
答案 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 }) }