📅  最后修改于: 2023-12-03 14:47:09.474000             🧑  作者: Mango
Ruby是一种动态、面向对象的脚本语言,它内置了许多强大的排序方法。本文将介绍 Ruby 中的常见排序方法及其使用方法。
sort
方法是 Ruby 中最常用的排序方法。sort
方法会按照字符串或数字的升序进行排序。
arr = [3, 2, 1]
arr.sort
# => [1, 2, 3]
sort_by
方法可以按照元素的某个属性进行排序。
people = [{ name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }, { name: 'Charlie', age: 20 }]
people.sort_by { |person| person[:age] }
# => [{:name=>"Charlie", :age=>20}, {:name=>"Alice", :age=>25}, {:name=>"Bob", :age=>30}]
reverse
方法可以对数组进行翻转。
arr = [1, 2, 3]
arr.reverse
# => [3, 2, 1]
sort_by!
方法与sort_by
方法类似,但是它会直接对原数组进行操作,而不是返回一个新的数组。
people = [{ name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }, { name: 'Charlie', age: 20 }]
people.sort_by! { |person| person[:age] }
# => [{:name=>"Charlie", :age=>20}, {:name=>"Alice", :age=>25}, {:name=>"Bob", :age=>30}]
sort_by
方法有一个好用的小技巧,在排序时可以通过取相反数来使排序结果反转。
arr = [3, 2, 1]
arr.sort_by { |x| -x }
# => [3, 2, 1]
sort
方法也可以接收一个块来进行排序。块中的代码会返回一个用于比较的值,相当于对元素先进行一次映射,再进行排序。
arr = ['a', 'b', 'cc', 'ddd']
arr.sort { |a, b| a.length <=> b.length }
# => ["a", "b", "cc", "ddd"]
sort
方法还有其他常用参数,比如可以设置排序方式(升序或降序)等,具体用法可以请参考官方文档。
本文介绍了 Ruby 中常见的排序方法,涉及到sort
、sort_by
、sort_by!
及reverse
方法。当你需要对数组进行排序时,这些方法会非常有用。