Добавить элементы массива к определенному индексу каждого массива в массиве массивов - PullRequest
0 голосов
/ 05 января 2019

У меня есть массив массивов, который служит таблицей данных, и я пытаюсь добавить дополнительный массив, как будто добавляя дополнительный столбец в таблицу.

Для простоты предположим, что первый массив a

a = [["a", "b", "c"], ["e", "f", "g"], ["i", "j", "k"]]

и второй массив b

b = ["d", "h", "l"]

желаемый результат:

c = [["a", "b", "c", "d"], ["e", "f", "g", "h"], ["i", "j", "k", "l"]]

Я пытался использовать + и некоторые попытки использовать map, но не могу его получить

Ответы [ 3 ]

0 голосов
/ 05 января 2019
a.zip(b).map { |arr,e| arr + [e] }
  #=> [["a", "b", "c", "d"],
  #    ["e", "f", "g", "h"],
  #    ["i", "j", "k", "l"]]

Промежуточный расчет выглядит следующим образом.

a.zip(b)
  #=> [[["a", "b", "c"], "d"],
  #    [["e", "f", "g"], "h"],
  #    [["i", "j", "k"], "l"]]

См. Array # zip .

0 голосов
/ 05 января 2019

Вы можете сжать их вместе, чтобы создать элементы массива, такие как [["a", "b", "c"], "d"], а затем просто сгладить каждый элемент.

a.zip(b).map(&:flatten)
#=> [["a", "b", "c", "d"], ["e", "f", "g", "h"], ["i", "j", "k", "l"]]

Ответ улучшился согласно комментарию Кэри. Я думаю, что он делал вещи с Руби раньше.

0 голосов
/ 05 января 2019

Вы можете использовать #each_with_index в сочетании с #map для перебора массива a и добавления соответствующих элементов массива b

> a.each_with_index.map{|e, i| e | [b[i]] }
=> [["a", "b", "c", "d"], ["e", "f", "g", "h"], ["i", "j", "k", "l"]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...