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 % 5 ke 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 s non-empty hai (Fizz/Buzz/FizzBuzz) → s use karo.
  • Agar s empty 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.