Ruby中的Array#reverse方法有什么作用?

时间:2014-11-18 05:44:59

标签: ruby arrays sorting ruby-2.1

在Ruby中,当我在数组上调用reverse方法时,它不会完全反向排序数组。

array = [5, 4, 9, 8, 7, 1, 2]

array.reverse # => [2, 1, 7, 8, 9, 4, 5]

我无法理解它在阵列上执行的操作。

2 个答案:

答案 0 :(得分:3)

> array
 => [5, 4, 9, 8, 7, 1, 2] 
> array.sort.reverse  # it will sort the array by value in descending order
 => [9, 8, 7, 5, 4, 2, 1] 

注意:

  • sort :返回通过排序self创建的新数组。
  • reverse :以相反的顺序返回包含self元素的新数组。

了解它的工作原理:

> array.reverse   # it will reverse the array by indexing
 => [2, 1, 7, 8, 9, 4, 5] 
> array.sort  # it will sort the array by value in ascending order
 => [1, 2, 4, 5, 7, 8, 9]

答案 1 :(得分:1)

Array#reverse反转数组的顺序,但不按相反顺序对数组进行排序。

array = [1,5,7,3]
array.reverse
=> [3,7,5,1]

如果要以相反的顺序对数组进行排序,可以试试这个

array.sort_by{|a|array.max - a}