Exercise 4: Top N (highest scores)
Problem Statement
Create a function `topN(scores, n)` that returns top n numbers.
Sample Output:
topN([85, 92, 78, 96, 88], 3) => [96, 92, 88] topN([10, 5, 20, 15], 2) => [20, 15]
Solution
const topN = (scores, n = 3) => [...scores].sort((a, b) => b - a).slice(0, n);Explanation
Overall goal:
- Input:
scores(numbers ka array), optionaln(default 3). - Output: sabse bade
nscores ka array.
Step 1: [...scores] — copy
- Same reason jaise previous example: original
scoresko change nahi karna. scores.sort(...)directly kara to original data ka order kharab ho jata.
Step 2: sort((a, b) => b - a) — descending order
- Yaha comparator
b - ahai (pehleb, phira). - Agar
b - apositive aaya →bko pehle rakha jayega → matlab bada number array ke aage aayega. - Result: array descending order me ho jata hai (largest → smallest).
Step 3: .slice(0, n)
slice(0, n)index 0 sen-1tak ke elements ka naya array deta hai.- Kyunki array already descending hai, ye top N highest scores hi honge.
Pattern:
- “sort + slice” combo bahut common hai jab bhi top 3 / top 10 / leaderboard banana ho.