⊗jsSpOtLO 272 of 294 menu

JavaScript'te Döngüsel İşlemlerin Optimizasyonu

Hafif bir işlem bile, bir döngüde defalarca tekrarlandığında çok fazla kaynak tüketebilir.

Bir örnek üzerinden inceleyelim. Diyelim ki bir dizimiz var:

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

Bu dizinin elemanlarının ortalamasını bulalım. Bunun için elemanların toplamını bulup adedine bölmek gerekir. Diyelim ki bir programcı bu sorunu zaten aşağıdaki şekilde çözmüş:

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

Bu çözümün problemlerini inceleyelim. Teknik olarak kod doğru çalışıyor ve doğru cevabı veriyor. Matematiksel olarak doğru olan, hem tüm toplamı adede bölmektir, hem de her bir terimi ayrı ayrı adede bölmektir.

Ancak, başka bir problem ortaya çıkıyor. Mesele şu ki, bölme işlemini dizimizdeki eleman sayısı kadar gerçekleştireceğiz. Ve sonuçta, bölme işlemini sadece en sonda - bir kez - yapabilecekken, çok fazla sayıda gereksiz işlem yapmış oluyoruz.

Kodumuzu optimize edelim:

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

Aşağıdaki kodu optimize edin:

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

Aşağıdaki kodu optimize edin:

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);
Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet