in reply to sort an array of hashes by value
Why is broccoli not at the end of the list? I know there's no entry for 9, but why is it inserted there?
Because the lookup of 9 in %ranking returns undef, and undef (issues a warning and) acts as 0 in a numerical comparison. Hence broccoli gets sorted as if its ranking was 0.
If you want unranked foods to sort to the end of the list, you could do something like this:
print %{$_} for sort { ( $ranking{$a->{number}} // 1e308 ) <=> ( $ran +king{ $b->{number}} // 1e308 ) } @food;; number 1 name apple number 2 name banana number 5 name orange number 10 name grape number 9 name broccoli
Note: the parens are required.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: sort an array of hashes by value
by micmac (Acolyte) on Jul 14, 2016 at 00:48 UTC |