Exercise 3: FizzBuzz (clean)
Problem Statement
Print 1..n. 3→Fizz, 5→Buzz, both→FizzBuzz, else number.
Sample Output:
fizzBuzz(5) => [1, 2, "Fizz", 4, "Buzz"] fizzBuzz(15) => [1, 2, "Fizz", 4, "Buzz", "Fizz", 7, 8, "Fizz", "Buzz", 11, "Fizz", 13, 14, "FizzBuzz"]
Solution
const fizzBuzz = (n) => {
const out = [];
for (let i = 1; i <= n; i++) {
const s = (i % 3 ? '' : 'Fizz') + (i % 5 ? '' : 'Buzz');
out.push(s || String(i));
}
return out;
};Explanation
Overall Goal:
- 1 se n tak numbers print karna, lekin:
- 3 se divisible → "Fizz"
- 5 se divisible → "Buzz"
- Dono se divisible (15) → "FizzBuzz"
- Warna number hi print.
Line 1: Function header
const fizzBuzz = (n) => {→ function jo n tak numbers process karega.
Line 2: Output array
const out = [];→ result store karne ke liye empty array.
Line 3: Loop setup
for (let i = 1; i <= n; i++) {→ 1 se n tak loop:let i = 1→ counter start 1 se.i <= n→ condition: n tak chalega.i++→ har iteration me increment.
Line 4: String building logic
const s = (i % 3 ? '' : 'Fizz') + (i % 5 ? '' : 'Buzz');i % 3→ remainder operator: agar divisible hai to 0, warna non-zero:i % 3 ? '' : 'Fizz'→ ternary operator:- Agar remainder non-zero (not divisible) → empty string
''. - Agar remainder 0 (divisible) →
'Fizz'. - Same logic
i % 5ke liye: divisible ho to'Buzz', warna''. +operator strings ko concatenate karta hai:- i=3:
'' + 'Buzz'='Buzz'(wrong, should be Fizz). - Wait, let me recalculate: i=3 →
i % 3 = 0→'Fizz',i % 5 = 3→''→'Fizz' + ''='Fizz'✓ - i=15:
'Fizz' + 'Buzz'='FizzBuzz'✓
Line 5: Push to array
out.push(s || String(i));s || String(i)→ logical OR:- Agar
snon-empty hai (Fizz/Buzz/FizzBuzz) →suse karo. - Agar
sempty hai →String(i)use karo (number as string).
Line 6: Return result
return out;→ complete array return.
Real world:
- Interview questions me common hai.
- Logic building practice ke liye perfect.