⊗jsSpOtLO 272 of 294 menu

Optimizarea operațiilor ciclice în JavaScript

Chiar și o operație ușoară, repetată de mai multe ori într-o buclă, poate consuma multe resurse.

Să ne uităm la un exemplu. Să presupunem că avem o anumită matrice:

let arr = [1, 2, 3, 4, 5, 6];

Să găsim media elementelor acestei matrice. Pentru a face acest lucru, trebuie să găsim suma elementelor și să o împărțim la cantitate. Să presupunem că un programator a rezolvat deja această problemă în felul următor:

let avg = 0; for (let elem of arr) { avg += elem / arr.length; } console.log(avg);

Să luăm în considerare problemele cu această soluție. Din punct de vedere tehnic, codul funcționează corect și oferă răspunsul corect. Chestia este că este corect din punct de vedere matematic fie să împarți întreaga sumă la cantitate, fie să împarți fiecare termen la cantitate.

Cu toate acestea, apare o altă problemă. Cert este că vom efectua împărțirea de atâtea ori câte elemente sunt în matricea noastră. Și se dovedește că facem un număr mare de operații inutile, la urma urmei, împărțirea ar fi putut fi făcută la sfârșit - o singură dată, împărțind întreaga sumă găsită.

Să optimizăm codul nostru:

let sum = 0; for (let elem of arr) { sum += elem; } let avg = sum / arr.length; console.log(avg);

Optimizați următorul cod:

for (let i = 1900; i <= 2100; i++) { let curr = new Date; let date = new Date(i, curr.getMonth(), curr.getDate()); if (curr.getDay() === date.getDay()) { console.log(date); } }

Optimizați următorul cod:

let obj = {a: 10, b: 20, c: 30, d: 40, e: 50}; let sum = 0; for (let key in obj) { if (String(obj[key])[0] === '1' || String(obj[key])[0] === '2') { sum += obj[key]; } } console.log(sum);
Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge