Как подсчитать элементы в массивах значений в массиве хешей - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть массив хэшей, который содержит массив элементов в качестве значения хэша.Вот структура:

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 голосов
/ 04 февраля 2019

Вы можете просто сделать это с помощью 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}]  
0 голосов
/ 04 февраля 2019

Вы можете использовать метод merge! , который изменяет исходный массив с новыми изменениями.

arr.map { |x| x.merge!({ link_count: x[:link].count }) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...