Изменение порядка массива в рубине
У меня есть следующий массив [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
Это отменило отдельные числа - любая идея, как я могу это остановить?
Ответы
Ответ 1
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]
Я не вижу, что вы видите.
Изменить. Расширяя то, что заметил Бен, вы можете изменить строку.
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"
Ответ 2
Похоже, что ваш массив на самом деле является строкой
Ответ 3
Вы пытаетесь изменить список на месте? Если да, то выполните:
>> 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]
Ответ 4
Если ваш массив является фактической строкой, попробуйте следующее:
"12,16,5,9,11,5,4".split(',').reverse
Надеюсь, что решает вашу проблему!
Ответ 5
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]