1

有没有办法修改特定的数组元素(基于某些条件),同时在 Ruby 中以相反的顺序遍历它?

为了更清楚,可以说,

问题是用 x 替换 [1,2,3,4,5] 中的偶数

输出应该是 [1,x,3,x,5] (相同的数组),但替换应该从右到左发生..从 5 到 1 遍历。

提前致谢!

这有效:(arr.length -1).downto(0) { |x| 用 arr[x] 做某事}

4

3 回答 3

3
p [1,2,3,4,5].reverse_each.map{|e| e.odd? ? e : e/2} #[5, 2, 3, 1, 1]
于 2012-09-03T11:43:45.480 回答
1

我了解您想以相反的顺序遍历,而不是使输出也反转。也许是这样:

xs = [1, 2, 3]
xs.reverse_each.with_index { |x, idx| xs[xs.size-1-idx] = x.to_s if x == 2 }
xs #=> [1, "2", 3]
于 2012-09-03T11:45:09.093 回答
0

我欣赏并喜欢 Ruby 的人性化语法,但您可能需要考虑更详细的选项,例如:

ary = [1,2,3,4,5]
i = ary.count - 1
while i >= 0 do
    ary[i] = "x" if ary[i] % 2 == 0
    i -= 1
end
puts ary.join(",")
于 2017-04-06T18:46:44.780 回答