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), optional n (default 3).
  • Output: sabse bade n scores ka array.

Step 1: [...scores] — copy

  • Same reason jaise previous example: original scores ko 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 - a hai (pehle b, phir a).
  • Agar b - a positive aaya → b ko 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 se n-1 tak 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.