Как я могу получить одно оповещение через только оператора? (только начал изучать 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.");
Другие вопросы по тегам