let temp = parseFloat(userInput);
if (!isNaN(temp)) {
temperatures[city] = temp;
} else {
console.log(Неверное значение для города ${city});
}
Пояснение шаг за шагом:
let temp = parseFloat(userInput);:
userInput — это строка, введенная пользователем через prompt(). Поскольку данные из prompt() всегда приходят в виде строки, их нужно преобразовать в число для дальнейших расчетов (например, температурные значения должны быть числами, чтобы их можно было сравнивать). parseFloat() — это встроенная функция JavaScript, которая пытается преобразовать строку в число с плавающей запятой (например, '25.5' станет 25.5). Она игнорирует любые символы после числа, если они есть, но если строка вообще не содержит валидного числа, она вернет NaN (Not a Number — "не число"). Пример:
javascript Copy code parseFloat("25.3") // 25.3 parseFloat("abc") // NaN if (!isNaN(temp)) {:
isNaN(temp) — это функция, которая проверяет, является ли значение temp "не числом" (NaN). Она вернет true, если значение является NaN, и false, если это число. !isNaN(temp) — оператор ! отрицает результат функции isNaN. Это означает, что условие внутри if выполнится, если temp не является NaN, то есть если введенная строка была успешно преобразована в число. Пример:
javascript Copy code isNaN(25.3) // false, потому что это число isNaN(NaN) // true, потому что это не число temperatures[city] = temp;:
Если условие !isNaN(temp) истинно (то есть введенные пользователем данные корректно преобразовались в число), значение сохраняется в объекте temperatures под ключом, соответствующим имени города (city). temperatures[city] — это обращение к полю объекта temperatures с названием города в качестве ключа. Таким образом, для каждого города сохраняется его температура. Пример:
javascript Copy code temperatures["Санкт-Петербург"] = 20.5; temperatures["Нью-Йорк"] = 15; } else {:
Этот блок выполнится, если !isNaN(temp) ложно, то есть если введенное пользователем значение не может быть преобразовано в число (например, если он ввел текст "abc"). console.log(Неверное значение для города ${city});:
Если пользователь ввел некорректное значение (например, текст вместо числа), то в консоли браузера будет выведено сообщение, которое сообщает, что для конкретного города введено неверное значение. Это помогает понять, где произошла ошибка. Пример работы кода: Пользователь вводит температуру для города Санкт-Петербург:
Ввод: "20.5" parseFloat("20.5") вернет 20.5, что является валидным числом. Условие !isNaN(20.5) вернет true, поэтому температура сохранится: temperatures['Санкт-Петербург'] = 20.5. Пользователь вводит текст вместо числа для Нью-Йорка:
Ввод: "abc" parseFloat("abc") вернет NaN, так как это не числовое значение. Условие !isNaN(NaN) вернет false, и программа выведет в консоль сообщение: Неверное значение для города Нью-Йорк. Зачем это нужно: Этот блок кода обеспечивает валидацию пользовательского ввода. Если пользователь введет что-то невалидное (не число), программа не запишет это в список температур и не будет работать с некорректными данными. Это помогает избежать ошибок при дальнейшем использовании температур в расчетах (например, для нахождения максимальной или минимальной температуры).
const tempsArray = Object.values(temperatures);
if (tempsArray.length > 0) { const maxTemp = Math.max(...tempsArray); const minTemp = Math.min(...tempsArray);
// вывод максимальной и минимальной температур
const minMaxElement = document.querySelector('.min_max_temp');
minMaxElement.textContent = `Максимальная температура: ${maxTemp}°C, Минимальная температура: ${minTemp}°C`;
} else { console.log("Температуры не введены."); } Пояснение шаг за шагом: const tempsArray = Object.values(temperatures);:
temperatures — это объект, в котором ключи — это названия городов, а значения — температуры. Object.values(temperatures) — метод JavaScript, который возвращает массив всех значений объекта temperatures. В нашем случае это будут температуры для каждого города. Пример:
javascript Copy code const temperatures = { 'Санкт-Петербург': 20, 'Нью-Йорк': 15, 'Хельсинки': 22 }; const tempsArray = Object.values(temperatures); console.log(tempsArray); // [20, 15, 22] То есть объект преобразуется в массив, содержащий только числовые значения температур.
if (tempsArray.length > 0) {:
Здесь проверяется, есть ли в массиве температур хотя бы одно значение. Если длина массива больше нуля, то это значит, что данные были введены. tempsArray.length — свойство массива, которое возвращает количество элементов в массиве. Если в массиве нет температур, программа переходит к блоку else. const maxTemp = Math.max(...tempsArray);:
Math.max() — встроенная функция JavaScript, которая возвращает максимальное значение из списка чисел. ...tempsArray — это так называемый оператор расширения (spread operator). Он преобразует массив в отдельные значения. Например, вместо передачи массива в Math.max(), мы передаем отдельные элементы: Math.max(20, 15, 22). Пример:
javascript Copy code const tempsArray = [20, 15, 22]; const maxTemp = Math.max(...tempsArray); // 22 const minTemp = Math.min(...tempsArray);:
Аналогично методу Math.max(), функция Math.min() находит минимальное значение из списка чисел. Опять же используется оператор расширения, чтобы передать отдельные значения массива в Math.min(). Пример:
javascript Copy code const minTemp = Math.min(...tempsArray); // 15 const minMaxElement = document.querySelector('.min_max_temp');:
document.querySelector('.min_max_temp') — метод для поиска элемента на странице с классом min_max_temp. Этот элемент будет использован для вывода текста с максимальной и минимальной температурами. Если у тебя в HTML есть следующий элемент: html Copy code
Этот код найдет его. minMaxElement.textContent = Максимальная температура: ${maxTemp}°C, Минимальная температура: ${minTemp}°C;:minMaxElement.textContent — это свойство, которое устанавливает текстовое содержимое элемента p с классом .min_max_temp. В данном случае в элемент будет добавлен текст с максимальной и минимальной температурами, которые были вычислены с помощью Math.max() и Math.min(). Шаблонные строки (использование символов ${}) позволяют удобно вставлять переменные внутрь строки. Пример: Если максимальная температура 22°C, а минимальная 15°C, то в элементе появится следующий текст:
html Copy code Максимальная температура: 22°C, Минимальная температура: 15°C else { console.log("Температуры не введены."); }:
Этот блок выполнится, если массив температур окажется пустым. То есть, если ни одна температура не была введена пользователем (например, если все окна prompt() были отменены). В этом случае программа выведет в консоль сообщение: "Температуры не введены.".