Спонсор поста: Бесплатно дать объявление о купле или продаже автомобиля.
Инструкция continue прерывает текущую итерацию цикла и возобновляет выполнение цикла с очередной итерации. Например:
var total = 0;
var i = 0;
while (++i <= 10) {
if (i == 5) {
continue;
}
total += i;
}
В данном скрипте оператор цикла while выполняет 10 итераций. На каждой итерации к переменной total добавляется значение i – кроме пятой итерации, когда i равно 5. В этом случае вызывается действие continue, выполнение дальнейших действий в теле цикла прекращается, и происходит переход к одиннадцатой итерации. В итоге переменная total будет содержать набор чисел: "1 2 3 4 6 7 8 9 10". Обратите внимание, что в этом наборе отсутствует число 5 – ведь пятая итерация цикла была прервана.
Инструкция break аналогична continue, но используется для досрочного прекращения цикла – даже если условие цикла все еще true. Рассмотрим пример:
var total = 0;
var i = 0;
while (++i <= 10) {
total += i;
if (total >= 5) {
break;
}
}
В этом скрипте с каждой итерацией total увеличивается на i. Как только значение total достигнет 5 (с помощью оператора if мы это проверяем), выполняется действие break и цикл while завершается, хотя он должен был бы выполняться 10 раз.
Предлагаю закрепить полученные знания на примере создания простой процедуры поиска.
Итак, задача: создать приложение, реализующее поиск по массиву с телефонными номерами и именами владельцев. Т.е. вводим имя (в поле name), жмем кнопку, получаем (в поле result) номер человека, имя которого введено.
1. Создаем новый документ, в первом кадре пишем следующий код:
info=[["Alex","+7-909-202-77-55"], ["Marta","+7-950-040-33-11"],
["Semen","+7-910-111-22-01"]];
Таким образом мы создаем двумерный массив info. Он содержит три элемента, каждый из которых также является массивом. Первый элемент - имя человека, второй - его телефонный номер.
Для обращения к первому имени массива Alex мы напишем такой код: info[0][0], для обращение к его телефонному номеру – info[0][1].
2. Добавляем описание функции:
function search() {
matchFound = false;
i = -1;
while (++i < info.length) {
}
}
С помощью этой функции будет выполняться поиск в массиве info нужного телефонного номера. Циклом while перебираем все элементы массива info.
3. Внутрь цикла while (в функции search()) вставьте следующий код:
if (info[i][0].toLowerCase() != name.text.toLowerCase()) {
continue;
}
result.text = info[i][1];
matchFound = true;
break;
На каждой итерации оператор if обращается к очередному элементу массива info и сравнивает имя из этого массива с тем, что введено пользователем в поле name. Переводим оба значения методом toLowerCase() в нижний регистр, чтобы поиск не был зависимым от строчных и прописных букв.
Действие continue выполняется при условии, что значения не равны. Последующие действия цикла пропускаются.
Если текст из поля name соответствует имени из массива info, continue не вызывается, и выполняются три действия, стоящие после оператора if: переменной result.text присваивается значение телефонного номера, matchFound --> true, выполняется действие break, которое прекращает выполнение цикла.
Если все понятно, двигаемся дальше. Кстати, может возникнуть вопрос "а нафига нам тут следует применять break?". Хороший вопрос. А теперь представьте, что ваш массив состоит из тысячи значений, а вы запросили первое из них. Будет break - вам тут же выведется то, что искали, не будет break - компьютер переберет все значения, прежде чем выведет верное. Так что ответ: "для экономии времени".
4. В функцию search() добавляем еще один оператор if после цикла:
if (matchFound == false) {
result.text="Не найдено
";
}
Выводим сообщение об ошибке, если искомых абонентов не нашлось.
5. Последний штрих. Готовим кнопку для поиска. Для этого создадим новый movie clip, присвоим ему имя search_btn и добавим следующий код:
search_btn.onRelease = function(){
search();
}

