Get the rank of an array of numbers
Rank each number by how many values are larger, starting at 1.
function ranking(values) { return values.map(value => values.filter(other => other > value).length + 1); }
Input & expected output
Input
[
80,
65,
90,
65
]Expected output
[
2,
3,
1,
3
]The edge case
Input
[]Expected output
[]Know the limits
- Ties share a rank and the next rank is skipped (competition ranking).
- Quadratic: fine for the lab’s 1,000 items.
The function above is the implementation used by the lab. The lab validates JSON types and caps size before execution; include equivalent validation when accepting untrusted input in your application.
Source & maintenance
Based on Get the rank of an array of numbers from the original 1loc collection by Nguyen Huu Phuoc. Copyright (c) 2020 phuoc-ng. MIT licensed.
Curated implementation; explicit input contract, edge case and limits. Original MDX retained as inert source evidence.
Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.
Keep exploring
- Clone an array — Create a new array without copying the objects inside it.
- Remove duplicate values — Keep the first occurrence of each value, in its original order.
- Flatten a nested array — Turn a nested array into one sequence of values.