This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Sorting an Array by an Attribute of its Objects | ||
|---|---|---|
| Code | Expected | Actual |
[5.01, -5, 0, 5].sort |
[-5, 0, 5, 5.01] | [-5, 0, 5, 5.01] |
["Utahraptor", "Ankylosaur", "Maiasaur"].sort |
["Ankylosaur", "Maiasaur", "Utahraptor"] | ["Ankylosaur", "Maiasaur", "Utahraptor"] |
arrays = [[1,2,3], [100], [10,20]]
arrays.sort_by { |x| x.size } |
[[100], [10, 20], [1, 2, 3]] | [[100], [10, 20], [1, 2, 3]] |
[1, 100, 42, 23, 26, 10000].sort do |x, y| x == 42 ? 1 : x <=> y end |
[1, 23, 26, 100, 10000, 42] | [1, 23, 26, 100, 10000, 42] |
class Animal
attr_reader :name, :eyes, :appendages
def initialize(name, eyes, appendages)
@name, @eyes, @appendages = name, eyes, appendages
end
def inspect
@name
end
end
animals = [Animal.new("octopus", 2, 8),
Animal.new("spider", 6, 8),
Animal.new("bee", 5, 6),
Animal.new("elephant", 2, 4),
Animal.new("crab", 2, 10)]
animals.sort_by { |x| x.eyes } |
[octopus, elephant, crab, bee, spider] | [octopus, elephant, crab, bee, spider] |
animals.sort_by { |x| x.appendages } |
[elephant, bee, octopus, spider, crab] | [elephant, bee, octopus, spider, crab] |