Continue instrukcija JavaScript'e
Taip pat egzistuoja continue instrukcija,
kuri paleidžia naują ciklo iteraciją. Ši
instrukcija kartais gali būti naudinga norint
supaprastinti kodą, nors praktiškai visada
uždavinį galima išspręsti ir be jos. Pažiūrėkime
praktiniu pavyzdžiu.
Tarkime, kad turime skaičių masyvą. Pereikime
jį ciklu ir skaičius, kurie dalijasi iš
2, pakelkime kvadratu ir išveskime
į konsolę, o skaičius, kurie dalijasi iš 3,
pakelkime kubu ir išveskime į konsolę. Štai aprašyto
uždavinio sprendimas:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let elem of arr) {
let result;
if (elem % 2 === 0) {
result = elem * elem;
console.log(result);
} else if (elem % 3 === 0) {
result = elem * elem * elem;
console.log(result);
}
}
Kaip matote, eilutė console.log(result)
kartojasi du kartus. Iškelkime ją
už if, štai taip:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let elem of arr) {
let result;
if (elem % 2 === 0) {
result = elem * elem;
} else if (elem % 3 === 0) {
result = elem * elem * elem;
}
console.log(result); // išvedimą iškeitėme už sąlygos
}
Tačiau dabar mūsų scenarijus veikia šiek tiek
kitokiu būdu: pasirodo, kad ir įprastiems elementams,
neapdorotiems per mūsų if, bus
atliekamas kintamojo result išvedimas
į konsolę, kas pagal mūsų uždavinio sąlygą mums
nereikia.
Išspręskime problemą, prie mūsų if pridėdami
dar sąlygą else, kuri būtų vykdoma
elementams, nesidalinantiems iš 2 ir
3, ir iškvieksime ten instrukciją continue,
kuri iš karto nukreips mus
į naują ciklo iteraciją:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let elem of arr) {
let result;
if (elem % 2 == 0) {
result = elem * elem;
} else if (elem % 3 == 0) {
result = elem * elem * elem;
} else {
continue; // pereisime į naują ciklo iteraciją
}
console.log(result); // bus vykdoma, jei dalijasi iš 2 arba 3
}
Parašykite ciklą, kuris išvestų tik
lyginius skaičius nuo 1 iki 100,
praleisdamas nelyginius naudodami continue.