迭代Ruby中具有索引位置的数组

时间:2014-07-01 21:15:38

标签: ruby arrays methods indexing

我正在为一门课程做准备工作,其中一个挑战(我失败了,悲惨地)走了一条路:

定义一个方法,该方法接受一个数组并将数组中的每个值乘以它在数组中的位置。

基本上,array = [1,2,3,4,5]应该返回1 * 0,2 * 1,3 * 2,4 * 3,5 * 4.

我很难搞清楚如何做到这一点。我不认为他们打算让我们使用.inject或.reduce或其他任何东西,除了基础知识。

这是我到目前为止所做的事情,但它并没有运行:

array = [1,2,3,4,5]

def calculator (arr)
new_arr = []
new_arr = arr.each_with_index {|value, index| value * index}
end

calculator(array)

我尝试过.collect和各种参数的一些变化。有时我得到参数错误或者数组返回给我而没有修改。

我真的很感激解释或任何建议!

3 个答案:

答案 0 :(得分:4)

[1, 2, 3, 4, 5].map.with_index(&:*)

答案 1 :(得分:0)

如果你想要超级基本的东西:

def calculator (array)
  count = 0
  new_array = []
  array.each do |number|
    new_array<<number*count
    count +=1
    end
  return new_array
end

它不是最干净的&#34;清洁&#34;方式,但确实帮助你解决问题:)

答案 2 :(得分:0)

对我来说,最好和最简单的方法是:

result = [1, 2, 3, 4, 5].each_with_index.map {|value, index| value * index}

结果是:

[0, 2, 6, 12, 20] 



或者以其他方式不使用map,您可以这样做:

[1, 2, 3, 4, 5].each_with_index do |value, index| 
    puts value * index 
end