Q:

Массивы с числовыми индексами JS

Создайте калькулятор для введённых значений
Напишите код, который:

Запрашивает по очереди значения при помощи prompt и сохраняет их в массиве.
Заканчивает ввод, как только посетитель введёт пустую строку, не число или     нажмёт «Отмена».
При этом ноль 0 не должен заканчивать ввод, это разрешённое число.
Выводит сумму всех значений массива

(function() {
  var arr = [],
    res = 0,
    calc;

  do {
    calc = +prompt('Введите число', '');
    if (calc == '' || calc == null || isNaN(calc)) break;
    arr.push(calc);
  } while (true);

  for (var i = 0; i < arr.length; i++) {
    res += arr[i];
  }

  return res;
})()

Как выполнить третье условие??

A:

(function() {
  var heap = [],
      tmp;

  do{
    tmp = prompt('Введите число', '');
    // Пусто или null или NaN (0 - это число, так что спокойствие, только спокойствие!)
    if(tmp === '' || tmp === null || isNaN(tmp)) break;
    // Если проверка не выбросила из цикла, добавляем в кучу как Number
    heap.push(+tmp);
  }while(true);

  alert(heap.reduce((a, e) => a + e));
})();

