遍历数组并选择每2个元素

时间:2018-11-11 12:11:12

标签: ruby

下面是我的代码:

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]

所以结果很好,但是请想象一下此代码是由一百万个元素组成的数组的。

我的问题:如何根据特定的索引遍历数组然后相乘?

2 个答案:

答案 0 :(得分:1)

您可以通过mapping您的数组with an index来实现这一点:

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

偶数索引处的每个元素都将乘以2,每个奇数元素都将保持不变。

答案 1 :(得分:1)

这里有两种无需索引的方法。

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]

请参见Array#cycle

#2

n = 1
arr.map { |el| (n = 3-n)*el }
  #=> [2, 2, 6, 4, 10, 6]