⊗jsSpOtLO 272 of 294 menu

Optimisation des opérations cycliques en JavaScript

Même une opération légère, répétée de nombreuses fois dans une boucle, peut consommer beaucoup de ressources.

Regardons un exemple. Supposons que nous ayons un tableau :

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

Trouvons la moyenne des éléments de ce tableau. Pour cela, il faut trouver la somme des éléments et la diviser par leur nombre. Imaginons qu'un programmeur ait déjà résolu ce problème de la manière suivante :

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

Examinons les problèmes de cette solution. Techniquement, le code fonctionne correctement et donne la bonne réponse. Le fait est qu'il est mathématiquement correct à la fois de diviser la somme entière par le nombre, et de diviser chacun des termes par le nombre.

Cependant, un autre problème se pose. Le fait est que nous allons effectuer la division autant de fois qu'il y a d'éléments dans notre tableau. Il s'avère donc que nous effectuons un grand nombre d'opérations inutiles, puisque la division aurait pu être faite à la fin - une seule fois, en divisant la somme totale trouvée.

Optimisons notre code :

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

Optimisez le code suivant :

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

Optimisez le code suivant :

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);
Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser