Цель
Напишите программу, которая печатает числа от 1 до 100. Но для кратных трем выведите «Fizz» вместо числа, а для кратных пяти выведите «Buzz». Для чисел, кратных трем и пяти, выведите «FizzBuzz».
- Распечатайте числа от 1 до 100
- Замените все числа, делящиеся на 3, на «Fizz».
- Замените все числа, делящиеся на 5, на «Жужжание».
- замените все числа, делящиеся на 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); }