📅  最后修改于: 2023-12-03 15:41:11.715000             🧑  作者: Mango
在 Ruby 中,有一个叫做 minmax_by()
的函数,它可以对一个可枚举对象进行遍历,返回其中最小和最大值所在的元素。这个函数在排序、最大最小值查找等场合非常有用。
enum.minmax_by {|obj| block } → [min, max]
其中 enum
是一个可枚举的对象,比如数组、哈希表等等。block
是一个代码块,用于定义如何对元素进行比较。
minmax_by()
函数的返回值是一个包含两个元素的数组,分别是最小值和最大值所在的元素。这两个元素的顺序是按照它们在可枚举对象中出现的顺序决定的。
如果可枚举对象为空,minmax_by()
函数将返回 nil
。
下面是一个示例,用 minmax_by()
函数找出一个数组中长度最短和最长的两个字符串:
words = ["apple", "banana", "cherry", "date", "elderberry"]
min, max = words.minmax_by {|word| word.length}
puts "Shortest word: #{min}, length #{min.length}"
puts "Longest word: #{max}, length #{max.length}"
输出:
Shortest word: date, length 4
Longest word: elderberry, length 10
minmax_by {|obj| obj.prop }
的语法来进行比较。minmax_by {|obj| [obj.prop1, obj.prop2] }
可以先按照 prop1
进行排序,再在相同 prop1
值的元素之间按照 prop2
进行排序。