Цель

Напишите программу, которая печатает числа от 1 до 100. Но для кратных трем выведите «Fizz» вместо числа, а для кратных пяти выведите «Buzz». Для чисел, кратных трем и пяти, выведите «FizzBuzz».

  1. Распечатайте числа от 1 до 100
  2. Замените все числа, делящиеся на 3, на «Fizz».
  3. Замените все числа, делящиеся на 5, на «Жужжание».
  4. замените все числа, делящиеся на 3 и 5, на «FizzBuzz»

Решение 1.Интуитивный подход

Использование оператора for loop и if… else…

for (var i = 1; i <= 100; i++) {
    if (i % 15 === 0) console.log("FizzBuzz");
    else if (i % 3 === 0) console.log("Fizz");
    else if (i % 5 === 0) console.log("Buzz");
    else console.log(i);
}

Решение 2 - конкатенация строк

Вместо жесткого кодирования числа, кратного 15, мы использовали здесь переменную для объединения соответствующей строки.

for (var i = 1; i <= 100; i++) {
    let answer = '';
    if (i % 3 === 0) answer += "Fizz";
    if (i % 5 === 0) answer += "Buzz";
    if (!answer) answer = i;
    console.log(answer);
}

Решение 3. Хешируйте все условия (Лучшее)

Прежде всего, мы сохраняем все условия в Object.
Затем, повторяя их все (как ключ, так и значение) через Object.entries.
Так что мы можем легко разделить наши условия и коды.

карта и присоединение

const condition = { 3: "Fizz", 5: "Buzz" };
for (var i = 1; i <= 100; i++) {
  let answer = Object.entries(condition)
    .map(([key, value]) => i % key === 0 ? value : "")
    .join("");
  if (!answer) answer = i;
  console.log(answer);
}

уменьшить

const condition = { 3: "Fizz", 5: "Buzz" };
for (var i = 1; i <= 100; i++) {
  let answer = Object.entries(condition)
    .reduce((acc, [key, value]) => acc += i % key === 0 ? value : "", "");
  if (!answer) answer = i;
  console.log(answer);
}

фильтр & для каждого

Изменение map & join на filter & forEach играет здесь ту же роль.

const condition = { 3: "Fizz", 5: "Buzz" };
for (var i = 1; i <= 100; i++) {
  let answer = "";
  Object.entries(condition)
    .filter(([key]) => i % key === 0)
    .forEach(([key, value]) => answer += value);
  if (!answer) answer = i;
  console.log(answer);
}

Тест производительности