⊗jsSpOtLO 272 of 294 menu

Βελτιστοποίηση Επαναληπτικών Λειτουργιών σε JavaScript

Ακόμα και μια ελαφριά λειτουργία, που επαναλαμβάνεται πολλές φορές σε έναν βρόχο, μπορεί να καταναλώσει πολλούς πόρους.

Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε έναν συγκεκριμένο πίνακα:

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

Ας βρούμε τον μέσο όρο των στοιχείων αυτού του πίνακα. Για να γίνει αυτό, πρέπει να βρούμε το άθροισμα των στοιχείων και να το διαιρέσουμε με τον αριθμό τους. Ας υποθέσουμε ότι κάποιος προγραμματιστής έχει ήδη λύσει αυτό το πρόβλημα με τον ακόλουθο τρόπο:

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

Ας εξετάσουμε τα προβλήματα αυτής της λύσης. Τεχνικά, ο κώδικας λειτουργεί σωστά και δίνει τη σωστή απάντηση. Το γεγονός είναι ότι μαθηματικά είναι σωστό τόσο να διαιρέσουμε ολόκληρο το άθροισμα με τον αριθμό, όσο και να διαιρέσουμε κάθε έναν από τους όρους ξεχωριστά με τον αριθμό.

Ωστόσο, προκύπτει ένα άλλο πρόβλημα. Το γεγονός είναι ότι θα εκτελέσουμε τη διαίρεση τόσες φορές, όσα στοιχεία υπάρχουν στον πίνακά μας. Και αποδεικνύεται ότι κάνουμε μεγάλο αριθμό περιττών πράξεων, αφού η διαίρεση θα μπορούσε να γίνει στο τέλος - μία φορά, διαιρώντας ολόκληρο το άθροισμα που βρέθηκε.

Ας βελτιστοποιήσουμε τον κώδικά μας:

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

Βελτιστοποιήστε τον ακόλουθο κώδικα:

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

Βελτιστοποιήστε τον ακόλουθο κώδικα:

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);
Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη