Как можно сократить код FizzBuzz до двух ифов?
for (let i = begin; i <= end; i++) {
  let str = '';
  if (!(i % 3)) {
    str += 'Fizz';
  }
  if (!(i % 5)) {
    str += 'Buzz';
  }
  console.log(str || i);
}
А вообще, давайте лучше сократим до 0 if'ов:

for (let i = begin; i <= end; console.log('FizzBuzz'.slice(i % 3 && 4, 4 << !(i % 5)) || i), i++) ;
Ну, можно такой вариант:
Делаем заранее массив из 15 элементов. В нулевом элементе - "FizzBuzz". В элементах, кратных трём [3,6,9,12] - "Fizz". В элементах, кратных пяти [5,10] - "Buzz". В остальных - пусто.
Вычисляем i%15. Берём соответствующий элемент массива.
Если элемент массива не пустой - это ответ. Если пустой - то берём исходное число i. Это и будет единственный "if".
Как видите - я схитрил, заменив проверки на изъятие решения из готовой таблицы. очевидно - этот метод хорош только при малом размере таблицы. Вообще, табличные методы вычислений - весьма хороши в плане скорости, рекомендую; но естественно, про размер таблицы надо помнить.