Сумма массива JavaScript с условием

Моя задача: написать код, который:

  1. Считывает значения с помощью Window.prompt() в массив.
  2. Заканчивается 1. как только пользователь вводит пустую строку NaN или нажимает «Отмена».
  3. Выводит сумму всех значений массива. Мой подход:
"use strict";
alert("Task 5");
var n = 0;
var arr = new Array();
while(!prompt("Enter a number") === ""
&& !isNaN(prompt("Enter a number"))
&& !prompt("Enter a number") === null){
    n = Number(prompt("Enter a number"));
    arr.push(n);
    sum += n;
}
console.info(sum);

Я прошу прощения за то, что раздражаю своим домашним заданием, но мой опыт еще не очень хорош. Спасибо.

вы подсказываете число 4 раза, в основном игнорируя первые 3, если речь идет о домашнем задании

Jaromanda X 01.10.2022 11:43

Извините, я вас не понял.

Vladyslav Maslov 01.10.2022 11:45

ты prompt 4 раза... почему? также !prompt("Enter a number") === "" не имеет смысла, так как !prompt("Enter a Number") никогда не будет === "" - аналогично для 3-й подсказки, если !prompt("Enter a number") === null

Jaromanda X 01.10.2022 11:46

также sum не инициализирован

Jaromanda X 01.10.2022 11:49

Вы имеете в виду, что оператор === должен быть == там, я должен сохранить подсказку в переменной перед циклом, делать итерационные подсказки, только если внешний подходит условиям?

Vladyslav Maslov 01.10.2022 11:49

НЕТ, я имею в виду !prompt("Enter a number") === "" должно быть prompt("Enter a number") !== "" - хотя первые 3 prompt БЕССМЫСЛЕННЫ

Jaromanda X 01.10.2022 11:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В каждом цикле вы запрашиваете 4 раза, и только в последний раз значение рассматривается (но оно не проверяется!!, поскольку вы проверяете каждый ответ отдельно в первых трех приглашениях)

Кроме того, вы забыли инициализировать sum, чтобы код не работал там.

Вот один из способов сделать то, что вы хотите

"use strict";
var n = 0;
var arr = new Array();
var sum = 0;
while(true){
    n = prompt("Enter a number");
    if (n === "" || isNaN(n) || n === null) {
        break;
    }
    n = Number(n);
    arr.push(n);
    sum += n;
}
console.info(sum);

Большое спасибо, г-н Яроманда X (:.

Vladyslav Maslov 01.10.2022 12:05

Другие вопросы по теме