颠倒ruby中数组的顺序

我有以下数组[12,16,5,9,11,5,4]它打印: 12,16,5,9,11,5,4

我想要它打印: 4,5,11,9,5,16,12

当我做array.reverse它打印:

 4,5,11,9,5,61,21 

它扭转了个人数字 – 任何想法我怎么能阻止它?

 irb(main):001:0> a = [12,16,5,9,11,5,4] => [12, 16, 5, 9, 11, 5, 4] irb(main):002:0> a.reverse => [4, 5, 11, 9, 5, 16, 12] 

我没看到你所看到的。

编辑 :扩展Ben注意到的,你可能正在翻转一个字符串。

 irb(main):005:0> "12,16,5,9,11,5,4".reverse => "4,5,11,9,5,61,21" 

如果必须以这种方式反转字符串,则应执行以下操作:

 irb(main):008:0> "12,16,5,9,11,5,4".split(",").reverse.join(",") => "4,5,11,9,5,16,12" 

听起来你的数组实际上是一个String

您是否试图将列表撤消到位? 如果是这样,那么:

 >> arr = [12,16,5,9,11,5,4] => [12, 16, 5, 9, 11, 5, 4] >> arr.reverse! => [4, 5, 11, 9, 5, 16, 12] >> arr => [4, 5, 11, 9, 5, 16, 12] 

除此以外:

 >> arr_rev=arr.reverse => [4, 5, 11, 9, 5, 16, 12] >> arr_rev => [4, 5, 11, 9, 5, 16, 12] 

如果您的数组是实际字符串,请尝试以下操作:

 "12,16,5,9,11,5,4".split(',').reverse 

希望能解决你的问题!

 arr1 = [12,16,5,9,11,5,4] i = 0 arr2 = [] arr1.length.times do arr2 << arr1.reverse[i] i += 1 end p arr2 >>[4, 5, 11, 9, 5, 16, 12]