⊗jsSpOtLO 272 of 294 menu

Optimierung zyklischer Operationen in JavaScript

Sogar eine leichte Operation, die mehrfach in einer Schleife wiederholt wird, kann viele Ressourcen verbrauchen.

Schauen wir uns ein Beispiel an. Nehmen wir an, wir haben ein Array:

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

Lassen Sie uns den Durchschnitt der Elemente dieses Arrays finden. Dazu müssen wir die Summe der Elemente finden und durch die Anzahl teilen. Nehmen wir an, ein Programmierer hat diese Aufgabe bereits wie folgt gelöst:

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

Lassen Sie uns die Probleme dieser Lösung betrachten. Technisch gesehen funktioniert der Code korrekt und liefert das richtige Ergebnis. Tatsächlich ist es mathematisch korrekt, sowohl die gesamte Summe durch die Anzahl zu teilen, als auch jedes einzelne Summand durch die Anzahl zu teilen.

Es entsteht jedoch ein anderes Problem. Die Sache ist die, dass wir die Division so oft ausführen werden, wie es Elemente in unserem Array gibt. Und es stellt sich heraus, dass wir eine große Anzahl überflüssiger Operationen durchführen, denn die Division hätte man am Ende durchführen können - nur einmal, indem man die gesamte gefundene Summe teilt.

Lassen Sie uns unseren Code optimieren:

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

Optimieren Sie den folgenden Code:

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); } }

Optimieren Sie den folgenden Code:

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);
Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen