Прервать цикл при совпадении [дубликат]
Как прервать цикл при нахождении совпадения? Функция перекликивает табы на странице. Должна остановиться на табе, локатор которого я передал в nameOfTab.
goOnTab: function(nameOfTab)
Мое условие игнорируется и цикл проходит по всем табам. Структура хранения локаторов:
const locators = < tabs: < home: 'Товары для дома', girl: 'Женская одежда и аксессуары', bag: 'Чемоданы и сумки', sport: 'Хобби, спорт, путешествия', children: 'Детские товары', >>
Отслеживать
задан 25 мая 2022 в 15:33
3 2 2 бронзовых знака
а вы пробовали в каждом проходе смотреть, что хранит в себе nameOfTab и locators.Tab? Посмотрите действиетльно ли есть совпания. Возможно что проблема в том что вам нужно дополнить условие. Перед циклом вставьте вывод обеих переменных в консоль например и посмотреите после того как программа отработает есть ли строка в которой вывелось 2 одинаковых значения. И вообще что выводится в том и другом случае
25 мая 2022 в 15:37
locators.tabs разве не перечисление?
break
Оператор break прерывает выполнение текущего цикла, оператора множественного выбора switch или блочного выражения с меткой. Выполнение кода продолжается с конструкции, следующей за прерванной.
Интерактивный пример
Синтаксис
break [label];
label Необязательный
Идентификатор связанной метки. Если прерываемое выражение не цикл или switch , указание метки обязательно.
Описание
С помощью оператора break можно прервать выполнение блочного выражения с меткой. В таком случае break должен находиться внутри блока кода с указанной меткой. Само блочное выражение может быть любым, а не только циклом.
Использование break , с меткой или без, невозможно внутри функции, которая вложена в прерываемые цикл, конструкцию switch или блочное выражение с меткой.
Примеры
break в цикле while
Следующая функция использует оператор break для выхода из цикла while , когда i станет равно 3, и возвращает значение 3 * x .
function testBreak(x) var i = 0; while (i 6) if (i == 3) break; > i += 1; > return i * x; >
break в конструкции switch
В примере оператор break прервёт выполнение switch сразу после выполнения кода в совпавшем case .
const food = "sushi"; switch (food) case "sushi": console.log("Sushi is originally from Japan."); break; case "pizza": console.log("Pizza is originally from Italy."); break; default: console.log("I have never heard of that dish."); break; >
break в блочном выражении с указанной меткой
В примере используется оператор break с меткой. В таком случае break обязательно должен быть вложен в блок кода с той же меткой. Обратите внимание, что inner_block вложен в outer_block .
outer_block: inner_block: console.log("1"); break outer_block; // break прервёт выполнение кода как в inner_block, так и в outer_block console.log(":-("); // не будет выполнено > console.log("2"); // не будет выполнено >
break вне блочного выражения с указанной меткой
В примере также используется break с меткой, но код будет выполнен с ошибкой SyntaxError , потому что break находится в блоке с меткой block_1 , а прерывается выполнение блока кода с меткой block_2 . Ещё раз, в таком случае break обязательно должен быть вложен в блок кода с меткой, выполнение которого требуется прервать.
block_1: console.log('1'); break block_2; // SyntaxError: label not found > block_2: console.log('2'); >
break внутри функций
Код в примерах также будет выполнен с ошибкой SyntaxError , потому что в обоих случаях break находится в теле функции, вложенной в прерываемый цикл или прерываемое блочное выражение с меткой.
function testBreak(x) var i = 0; while (i 6) if (i == 3) (function() break; >)(); > i += 1; > return i * x; > testBreak(1); // SyntaxError: Illegal break statement
block_1: console.log('1'); ( function() break block_1; // SyntaxError: Undefined label 'block_1' >)(); >
Спецификации
| Specification |
|---|
| ECMAScript Language Specification # sec-break-statement |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 7 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
MDN
Support
- Product help
- Report an issue
Our communities
Developers
- Web Technologies
- Learn Web Development
- MDN Plus
- Hacks Blog
- Website Privacy Notice
- Cookies
- Legal
- Community Participation Guidelines
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.
Как прервать многоуровневый цикл js
Прервать цикл for можно и с помощью ключевого слова return :
function findNumber(numbers, searchNumber) for (let i = 0; i numbers.length; i++) if (numbers[i] === searchNumber) return `Число $searchNumber> найдено в массиве на позиции $i>.`; > > return `Число $searchNumber> не найдено в массиве.`; > const numbers = [1, 5, 10, 12, 15]; console.log(findNumber(numbers, 10)); // выводится "Число 10 найдено в массиве на позиции 2." console.log(findNumber(numbers, 20)); // выводится "Число 20 не найдено в массиве."
В данном примере функция findNumber ищет заданное число в массиве numbers . Если число найдено, функция возвращает строку с его позицией в массиве, используя оператор return , который прерывает выполнение цикла. Если число не найдено, функция также возвращает строку, но уже без позиции числа в массиве. Прерывание цикла через return позволяет избежать лишних итераций, что повышает производительность кода.
21 октября 2021
Чтобы прервать выполнение многоуровневого цикла, можно использовать оператор breake , разместив его во внешнем цикле:
for (let i = 1; i 9; i++) if (i == 2) break; > for (let j = 1; j 3; j++) console.log(i); > > // => 111
Как только условие выполнится, выполнение цикла будет прервано и выполнение кода продолжается с конструкции, следующей за циклом.
Как можно прервать многоуровневый цикл js
Чтобы прервать выполнение многоуровневого цикла, можно использовать оператор breake , разместив его во внешнем цикле:
for (let i = 1; i 9; i++) if (i == 2) break; > for (let j = 1; j 3; j++) console.log(i); > > // => 111
Как только условие выполнится, выполнение цикла будет прервано и выполнение кода продолжается с конструкции, следующей за циклом.
