在Ruby中将数组元素组合在一起的最佳方法

时间:2013-04-14 18:53:29

标签: ruby arrays loops

说我有以下内容:

a = [1,2,3,4,5,6,7,8]

如何将其转换为每对的平均值?

也就是说,我该如何制作

a = [1.5,3.5,5.5,7.5]

我的意思是,我可以做到

我正在考虑a.step(2),然后......涉及each_with_index的事情?

编辑:我明白这一点:

arr.each_with_index.map { |x,i| [x, i+2] }

arr.each_with_index.map { |x,i| (x + arr[i+1])/2 }

然后过滤掉所有偶数指数?

1 个答案:

答案 0 :(得分:4)

each_slice(2)map会在这里解决问题:

[1,2,3,4,5,6,7,8].each_slice(2).map { |x,y| (x+y)*0.5 }
 => [1.5, 3.5, 5.5, 7.5]

each_slice一次迭代数组 n 元素,然后我们map转换生成的枚举数。