diff --git a/frontend/dashboard.js b/frontend/dashboard.js index 281b9a2..b6ab9e3 100644 --- a/frontend/dashboard.js +++ b/frontend/dashboard.js @@ -130,19 +130,22 @@ function updateStatistics(subjects) { return; } - const scores = subjects.map(subject => subject.scoreValue); - const highest = Math.max(...scores); - - // 計算加權平均 + // ⚡ Bolt: Combine multiple O(n) array iterations into a single loop + // to avoid intermediate array allocation and reduce iteration overhead. + let highest = -Infinity; let totalWeightedScore = 0; let totalWeight = 0; - subjects.forEach(subject => { + for (let i = 0; i < subjects.length; i++) { + const subject = subjects[i]; const score = subject.scoreValue; + + if (score > highest) highest = score; + const weight = getSubjectWeight(subject.SubjectName); totalWeightedScore += score * weight; totalWeight += weight; - }); + } const weightedAvg = totalWeight > 0 ? totalWeightedScore / totalWeight : 0;