有没有办法修改特定的数组元素(基于某些条件),同时在 Ruby 中以相反的顺序遍历它?
为了更清楚,可以说,
问题是用 x 替换 [1,2,3,4,5] 中的偶数
输出应该是 [1,x,3,x,5] (相同的数组),但替换应该从右到左发生..从 5 到 1 遍历。
提前致谢!
这有效:(arr.length -1).downto(0) { |x| 用 arr[x] 做某事}
p [1,2,3,4,5].reverse_each.map{|e| e.odd? ? e : e/2} #[5, 2, 3, 1, 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]
我欣赏并喜欢 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(",")