⊗jsSpOtLO 272 of 294 menu

Tối ưu hóa các thao tác lặp trong JavaScript

Ngay cả một thao tác nhẹ, được lặp lại nhiều lần trong vòng lặp, cũng có thể tốn rất nhiều tài nguyên.

Hãy cùng xem xét một ví dụ. Giả sử chúng ta có một mảng như sau:

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

Hãy tìm giá trị trung bình của các phần tử trong mảng này. Để làm điều đó, cần tìm tổng của các phần tử và chia nó cho số lượng. Giả sử một lập trình viên nào đó đã giải quyết bài toán này theo cách sau:

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

Hãy cùng xem xét các vấn đề của giải pháp này. Về mặt kỹ thuật, mã hoạt động đúng và cho đáp án đúng. Vấn đề là về mặt toán học thì đều đúng khi chia toàn bộ tổng cho số lượng, và cũng đúng khi chia từng số hạng cho số lượng.

Tuy nhiên, một vấn đề khác phát sinh. Vấn đề là chúng ta sẽ thực hiện phép chia nhiều lần bằng với số phần tử trong mảng. Và kết quả là chúng ta thực hiện một số lượng lớn các thao tác thừa, vì lẽ ra phép chia có thể được thực hiện ở cuối - chỉ một lần, bằng cách chia toàn bộ tổng tìm được.

Hãy tối ưu hóa mã của chúng ta:

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

Tối ưu hóa mã sau:

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

Tối ưu hóa mã sau:

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);
Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối