Ligzdotās cilpas jeb Nested loops / JavaScript

Ko darīt, ja jums ir nepieciešams kods, lai vienlaikus veiktu vairāk nekā vienu uzdevumu? Varbūt jums ir jāapstrādā datu kopa A, bet tajā pašā laikā jāapstrādā arī datu kopa B. Šādos gadījumos varat izmantot ligzdotas cilpas. Iespējams, jau esat iepazinies ar for cilpu manā iepriekšējā rakstā, kas tiek izmantota, lai norādītu kodu, lai atkal un atkal veiktu vienu un to pašu uzdevumu.

for (i = 0; i < 2; i++) {

// izpildās kāds kods

} 

Taču, izmantojot JavaScript, ir iespējams ligzdot cilpas citās cilpās, lai vienlaikus varētu veikt vairākus uzdevumus. Var būt arī vairāki ligzdošanas līmeņi. Tagad apskatīsim praktisku piemēru, kur varētu izmantot ligzdotu cilpu.

for (i = 0; i < 2; i++) {
  for (j = 1; j <= 7; j++) console.log("Nedēļa " + i + " diena " + j);
}

Pieņemsim, ka veidojat divu nedēļu plānu dienām no pirmdienas līdz piektdienai, jums ir jāievada katras dienas numurs un nedēļa, ar kuru tas ir saistīts. Jums ir piecas dienas 1. nedēļai un piecas dienas 2. nedēļai. Ligzdotas cilpas izmantošana ir ideāls veids, kā sasniegt šo rezultātu. Ļaujiet man to tagad sadalīt, izmantojot piemēru ar cilpām.

Ja atceramies mūsu piemēru, mums ir divas kategorijas; nedēļas un dienas. Pirmā cilpa, kas pazīstama arī kā ārējā cilpa, darbosies nedēļu laikā. (ārējā cilpa)

for (i = 0; i < 2; i++)

Ir nepieciešams pieauguma skaitītājs 2, un tas tiek izveidots ar mainīgo ar nosaukumu i.

Tad ligzdotā ( cilpa cilpā ) dienu laikā. (iekšējā cilpa(ligzda))

for (i = 0; i < 2; i++) {   for (j = 1; j <= 5; j++) console.log("Nedēļa " + i + " diena " + j); }

Lai to izdarītu, ir nepieciešams vēl viens pieauguma skaitītājs, un tas tiek izveidots ar mainīgo ar nosaukumu j. Visbeidzot, lai konsolei izvadītu tekstu ar i un j vērtībām, ir nepieciešama konsoles žurnāla metode. Šis kods izvada 10 rindiņas 1. nedēļā un katru dienu no 1. līdz 5. nedēļai un pēc tam to pašu 2. nedēļā.

Tomēr jums ir jāuzmanās, lai nepārspīlētu, jo vairāku līmeņu ligzdotas cilpas nav īpaši efektīvas. Citiem vārdiem sakot, jo vairāk ir ligzdotu cilpu, jo lēnāk darbosies kods.

Tagad izpētīsim piemēru, kurā jūs izvadīsit kodu, izmantojot ligzdotas cilpas, lai parādītu vasaras mēnešus divu gadu laikā.

Ņemiet vērā, ka šis gada mainīgais ir norādīts kā 2023, un izejas nosacījums, ja gada salīdzinājums ir mazāks par 2025, tas atgriež nepatiesu vērtību, jeb false . Esmu arī iestatījis gada vērtību palielināt par vienu katrā cilpā.

for (var gads = 2023; gads < 2025; gads++) {

console.log(gads);

}

Būtībā es šo cilpu esmu kodējis divas reizes. Pēc tam cilpas pamattekstā ierakstu console.log un iekavās ievietoju mainīgo gadu. Es paredzu, ka izvade parādīs 2023 un 2024. Es palaižu for cilpu, lai apstiprinātu, ka tas tā ir, un patiešām konsolē tiek reģistrētas vērtības 2023 un 2024.

Šis ir process, kas jums jau ir pazīstams. Tagad es vēlos demonstrēt ligzdotu cilpu, un, lai to izdarītu, man ir jāpievieno vēl viena cilpa pirmās cilpas pamattekstā. Šī būs arī for cilpa. Šoreiz es ierakstu (var mēnesis vienāds ar 6, mēnesis mazāks par 9 un mēnesis plus, plus). Tas, ko es šeit daru, ir tikai vasaras mēneši. Vasaras mēneši parasti ir jūnijs, jūlijs un augusts ziemeļu puslodē. Tas ir 6., 7. un 8. mēnesis. Ņemiet vērā, ka skaitītājs sāksies 6. mēnesī un turpinās pārbaudīt, vai mēneša mainīgajā saglabātie skaitļi ir mazāki par 9. Katrā nākamajā ciklā daudzmainīgā saglabātā vērtība tiks rādīta. palielināt par 1. Faktiski tas darbosies 6., 7. un 8. mēnesī. Pēc tam, kad tiks izpildītas šīs trīs cilpas, tas apstāsies.

for (var gads = 2023; gads < 2025; gads++) {
    console.log(gads);
    for (var mēnesis = 6; mēnesis < 9; mēnesis++) {
       
    }
  }

Tagad iekšējās cilpas pamattekstā ierakstu console.log. Lai pārliecinātos, ka tas ir ligzdots, es pievienošu vairākas domuzīmes un pēc tam mēneša mainīgo.

for (var gads = 2023; gads < 2025; gads++) {
  console.log(gads);
  for (var mēnesis = 6; mēnesis < 9; mēnesis++) {
    console.log("---------", mēnesis);
  }
}

Tagad, kad es palaižu šo kodu, ārējā cilpa iedarbosies pirmā un iestatīs gada mainīgā vērtību uz 2023. Pēc tam konsolē reģistrēs šo iegūto numuru un pēc tam ievadīs iekšējās cilpas kodu un palaidīs to. Iekļūstot iekšējās cilpas kodā, es varu sagaidīt, ka kods darbosies trīs reizes un izvadīs 6., 7. un 8. domuzīmes. Pēc tam iekšējā cilpa tiks aizvērta, un kods pārvietosies atpakaļ uz ārējo cilpu, lai sāktos nākamās cilpas cikls. Kad tas sākas, gada mainīgā vērtība ir palielināta par vienu līdz 2024. Tas joprojām atbilst nosacījumam, ka gads ir mazāks par 2025. Kods reģistrē gadu un pāriet uz iekšējo cilpu. JavaScript atkal ieies iekšējā cilpā un palaidīs to atkārtoti. Atkal tas izvadīs 6, 7 un 8 vēlreiz. Šis kods turpinās šo secību rādīšanu 2024. gadā un pēdējos trīs vasaras mēnešos.

 

Pirms beidzu šo rakstu, ļaujiet man parādīt, kā vienkāršot for cilpu. Tā vietā, lai izmantotu šos garos mainīgo nosaukumus, es varu vienkārši izmantot i, nevis gadu, un es varu izmantot j, nevis mēnesi.

for (var i = 2023; i < 2025; i++) {
    console.log(i);
    for (var j = 6; j < 9; j++) {
      console.log("---------", j);
    }
  }

Tas padara kodu vieglāk lasāmu. Var šķist, ka to ir grūtāk saprast, jo es izmantoju i un j, nevis aprakstošus nosaukumus. Taču šie mainīgo nosaukumi ir standarta prakse izstrādes kopienā un tiek uzskatīti par labāko praksi lietošanai. Tagad esat uzzinājis par ligzdotajām cilpām un to izmantošanas iemeslu. Ir svarīgi atcerēties, ka, lai gan ligzdotās cilpas ir izstrādātāju izvēle, tās var būt resursietilpīgas. Ligzdotas cilpas var izmantot gadījumos, kad nepieciešama automātiska koda atkārtošana, piemēram, skaitļu kārtošana no lielākā uz mazāko.

Loading

Noderīgs raksts? Dalies ar citiem: