⊗jsSpOtEI 273 of 294 menu

Optimering av onödiga loopiterationer i JavaScript

I följande kod kontrollerar en programmerare om arrayen innehåller siffran 3:

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; let exists = false; for (let elem of arr) { if (elem === 3) { exists = true; } } console.log(exists);

Vad är fel med hans lösning? Det verkar som att inga onödiga operationer utförs i loopen. Problemet, ändå, är att efter det har fastställts att siffran 3 finns i arrayen, fortsätter loopen ändå att snurra till slutet av arrayen.

Mest ineffektivt blir det om siffran 3 hittas någonstans i början av arrayen, medan själva arrayen har en längd på, låt oss säga, 1000 element. Då blir det tusen meningslösa, onödiga loopiterationer! Inte optimalt.

Låt oss optimera koden genom att stoppa loopen i rätt tid:

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; let exists = false; for (let elem of arr) { if (elem === 3) { exists = true; break; } } console.log(exists);

Följande kod räknar ut hur många element i arrayen som behöver läggas ihop för att summan ska bli större än 10. Utför optimering:

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; let sum = 0; let i = 1; for (let elem of arr) { sum += elem; if (sum <= 10) { i++; } } console.log(i);

Följande kod skriver ut jämna tal från ett givet intervall. Utför optimering:

for (let i = 0; i <= 100; i++) { if (i % 2 === 0) { console.log(i); } }

Följande kod skriver ut tal som är delbara samtidigt med 2 och med 3. Utför optimering:

for (let i = 0; i <= 100; i++) { if (i % 2 === 0 && i % 3 === 0) { console.log(i); } }

Följande kod letar efter alla fredagar den 13:e i innevarande år. Utför optimering:

for (let i = 0; i <= 11; i++) { let curr = new Date; let last = new Date(curr.getFullYear(), i + 1, 0).getDate(); for (let j = 1; j <= last; j++) { let date = new Date(curr.getFullYear(), i, j); if (date.getDate() === 13 && date.getDay() === 5) { console.log(date); } } }
Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa