Соблюдал весь синтаксис, логика, вроде, выстроена правильно, однако не выдаёт sum. Подскажите, где я ошибся. Javascript

var arr = [];
var newArray = [];
var sum

for (var i = 0; 1; i++) {
  arr[i] = Number(prompt("Введите число: "));
  if (arr[i] > 30000) {
    arr.splice(i, 1)
    i = i - 1
    continue;
  }
  if (arr[i] == 0) {
    arr.splice(i, 1);
    break;
  } else if (i == 999) {
    break;
  }
}
console.log(arr)
for (var i = 0; i < arr.lenght; i++) {
  if (arr[i] > 9 && arr[i] < 100 && arr[i] % 5 == 0) {
    sum += arr[i]
  }
}
console.log(sum)


Ответы (1 шт):

Автор решения: Rynay

Вы увеличиваете сумму, но не указали начальное значение. Вы не проверяете числа на NaN (Хотя, может быть, Вам и их собирать надо, кто знает?). Опечатка в свойстве length. Не понятна логика сначала добавления, а потом удаления из массива, лучше проверять перед добавлением. Не используете newArray.

Простите, но я переписала Ваш код. Я правильно уловила ход Ваших мыслей?) Дайте знать, если я потеряла суть задачи.

var arr = [];
var sum;

while(true){
  if(arr.length === 999) break;
  var input = +prompt("Введите число: ");
  if(input === 0) break;
  if(input > 30000) continue;
  if(!isNaN(input)) arr.push(input); 
}

console.log(arr)

sum = arr.reduce((acc, num) => {
  if(9 < num && num < 100 && num % 5 === 0){
    return acc + num;
  } else {
    return acc;
  }
}, 0)

console.log(sum);

→ Ссылка