Как я могу получить одно оповещение через только оператора? (только начал изучать JavaScript)
Здесь часть кода из книги "Начало JS 4-е издание". Когда я загружаю его в браузер, который будет показывать мне 2 раза предупреждения, потому что я ввел 2 NaNs в массиве. Я хотел бы отображать оповещение только один раз всегда, как я могу получить это, зная только оператор?
if (isNaN(degFahren[loopCounter]))
{
alert ("You have text parameters that will be skipped");
continue;
}
Я понимаю, что цикл должен выполняться только один раз внутри блока @if, но не могу этого понять (((
Спасибо!!!
2 ответа
Попробуйте использовать соответствующий метод массива, includes
, чтобы увидеть, если массив включает в себя определенный элемент.
const arr = [1, NaN, NaN, 4];
if(arr.includes(NaN)) {
alert('You have text parameters that will be skipped.');
}
Вам не нужно двойное вложенное for
петли.
Если вам нужно проверить, сколько раз конкретный элемент находится в массиве, вы можете использовать .filter
создать новый массив только с соответствующими элементами и проверить новый массив length
:
const arr = [1, NaN, NaN, 4];
const NaNs = arr.filter(item => isNaN(item));
if(NaNs.length > 0) {
alert('You have text parameters that will be skipped: ' + NaNs.length);
}
Наиболее общий подход - ввести переменную:
var numberOfWarnings = 0;
Увеличивайте и проверяйте его значение всякий раз, когда есть причина показать предупреждение:
if (numberOfWarnings++ == 0) alert("You'll see me only if I was first.");