Итерируйте по массиву и выбирайте каждые 2 элемента - PullRequest
0 голосов
/ 11 ноября 2018

Вот мой код ниже:

array = [1, 2, 3, 4, 5, 6]
multiplie_array = [array[0]*2, array[1], array[2]*2, array[3], array[4]*2, array[5]]
=> [2, 2, 6, 4, 10, 6]

Итак, результат хороший, но представьте себе этот код для массива, состоящего из 1 миллиона элементов.

Мой вопрос: как вы перебираете массив по определенному индексу, а затем умножаете?

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Вот два способа сделать это без индекса.

arr = [1, 2, 3, 4, 5, 6]

# 1

tf = [2, 1].cycle
  #=> #<Enumerator: [2, 1]:cycle>
arr.map { |el| el*tf.next }
  #=> [2, 2, 6, 4, 10, 6]

См. Массив # цикл .

# 2

n = 1
arr.map { |el| (n = 3-n)*el }
  #=> [2, 2, 6, 4, 10, 6]
0 голосов
/ 11 ноября 2018

Вы можете добиться этого, сопоставляя свой массив, с индексом :

[1, 2, 3, 4, 5, 6].map.with_index { |el,i| i.even? ? el * 2 : el }
#  => [2, 2, 6, 4, 10, 6]

Каждый элемент с четным индексом умножится на 2, каждый нечетный элемент останется без изменений.

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