首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Ruby中迭代具有索引位置的数组

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

Stack Overflow用户
提问于 2014-07-02 05:15:38
回答 3查看 3.2K关注 0票数 0

我正在为一门课程做准备工作,其中一个挑战(我失败了,很不幸)大致是这样的:

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

所以基本上,array = 1,2,3,4,5应该返回1*0,2*1,3*2,4*3,5*4。

我想不出怎么做很麻烦。我不认为他们打算让我们使用.inject或.reduce或任何东西,除了最基本的东西。

这就是我到目前为止所做的,但它不能运行:

代码语言:javascript
运行
复制
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的一些变体和各种参数。有时我会得到参数错误,或者返回给我的数组没有任何修改。

如果您能给我一个解释或建议,我将不胜感激!

EN

回答 3

Stack Overflow用户

发布于 2014-07-02 05:17:56

代码语言:javascript
运行
复制
[1, 2, 3, 4, 5].map.with_index(&:*)
票数 5
EN

Stack Overflow用户

发布于 2014-07-02 12:02:09

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

代码语言:javascript
运行
复制
result = [1, 2, 3, 4, 5].each_with_index.map {|value, index| value * index}

这会导致:

代码语言:javascript
运行
复制
[0, 2, 6, 12, 20] 

或者,在不使用map的情况下,您可以执行以下操作:

代码语言:javascript
运行
复制
[1, 2, 3, 4, 5].each_with_index do |value, index| 
    puts value * index 
end
票数 1
EN

Stack Overflow用户

发布于 2014-07-02 05:24:13

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

代码语言:javascript
运行
复制
def calculator (array)
  count = 0
  new_array = []
  array.each do |number|
    new_array<<number*count
    count +=1
    end
  return new_array
end

这不是最“干净”的方法,但确实可以帮助你解决这个问题:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24519376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档