在修改相同阵列的同时迭代数组

时间:2014-10-28 13:59:36

标签: ruby

以下数组迭代正常运行

data = [17, 22, 12, 24]
data.each do |item| 
   puts "number: #{item}"
end

我希望将每个新字符串插入到同一个数组中,而不是执行puts。以下方法失败,没有错误。我不确定这是否会造成无限循环。

data = [17, 22, 12, 24]
data.each do |item| 
    data << "number: #{item}"
 end

我也尝试了insert而不是<<,但同样的问题出现了。

2 个答案:

答案 0 :(得分:2)

如果要将新项添加到数组中,请执行以下操作:

data = [17, 22, 12, 24]
data.concat data.collect{|i| "number: #{i}"}
# data => [17, 22, 12, 24, "number: 17", "number: 22", "number: 12", "number: 24"]

如果您只想用新项目替换数据内容:

data = data.collect{|i| "number: #{i}"}

答案 1 :(得分:1)

使用Array#map!方法:

data = [17, 22, 12, 24]
data.map! { |item| "number: #{item}" }

结果:

["number: 17", "number: 22", "number: 12", "number: 24"]