ruby заполняет элементы массива в набор вложенных массивов и удаляет дубликаты - PullRequest
0 голосов
/ 09 января 2020

У меня есть массивы месяцев и month_doc_count_for_topi c.

  months = ["2019-01-01", "2019-02-01", "2019-03-01", "2019-04-01"]
  monthly_doc_count_for_topic =  [
    ["foo","2019-02-01: 186904","2019-03-01: 196961"],
    ["bar","2019-01-01: 8876","2019-04-01: 8694"]
  ]
  goal = [ 
    ["foo","2019-02-01: 186904","2019-03-01: 196961","2019-01-01","2019-02-01","2019-03-01","2019-04-01"],
    ["bar","2019-01-01: 8876","2019-04-01: 8694","2019-01-01","2019-02-01","2019-03-01","2019-04-01"]
  ]

Я хочу заполнить элемент массива месяцев в массивы внутри month_doc_count_for_topi c, так что похоже на массив цель .

Моя попытка:

  monthly_doc_count_for_topic.map do |topic_set| 
    months.each { |month| topic_set << month }
  end

Но я ' m:

=> [
  [0] [
    [0] "2019-01-01",
    [1] "2019-02-01",
    [2] "2019-03-01",
    [3] "2019-04-01"
  ],
  [1] [
    [0] "2019-01-01",
    [1] "2019-02-01",
    [2] "2019-03-01",
    [3] "2019-04-01"
  ]
] 

он не добавляет значения из month_doc_count_for_topi c, а заменяет его элементами из массива month. Как я могу изменить свой код для достижения результата, такого как цель массива? Большое спасибо!

1 Ответ

1 голос
/ 09 января 2020

В вашей попытке замените

month_doc_count_for_topi c .map

на

month_doc_count_for_topi c .each

и он прекрасно работает:

goal = monthly_doc_count_for_topic.each do |topic_set|
  months.each { |month| topic_set << month }
end

Но я бы предпочел решение CarySwoveland в комментарии, оно менее многословно:

monthly_doc_count_for_topic.map { |topic_set| topic_set + months }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...