Array Average in JavaScript

sum / length. Empty array is divide-by-zero. Guard it.

BeginnerArray ProgramsExample 2 of 6
array-average.js
1// Method 1: Using for loop
2function averageLoop(arr) {
3 if (arr.length === 0) return 0;
4
5 let sum = 0;
6 for (let i = 0; i < arr.length; i++) {
7 sum += arr[i];
8 }
9 return sum / arr.length;
10}
11
12let numbers = [10, 20, 30, 40, 50];
13console.log("Array:", numbers);
14console.log("Average:", averageLoop(numbers));
15
16// Method 2: Using reduce
17function averageReduce(arr) {
18 if (arr.length === 0) return 0;
19
20 let sum = arr.reduce((acc, num) => acc + num, 0);
21 return sum / arr.length;
22}
23
24console.log("\nUsing reduce:", averageReduce([5, 10, 15, 20]));
25
26// Method 3: Using forEach
27function averageForEach(arr) {
28 if (arr.length === 0) return 0;
29
30 let sum = 0;
31 arr.forEach(num => sum += num);
32 return sum / arr.length;
33}
34
35console.log("\nUsing forEach:", averageForEach([2, 4, 6, 8, 10]));
36
37// Method 4: One-liner with reduce
38const average = arr => arr.length ? arr.reduce((a, b) => a + b) / arr.length : 0;
39
40console.log("\nOne-liner:", average([1, 2, 3, 4, 5]));
41
42// Method 5: With precision
43function averagePrecise(arr, decimals = 2) {
44 if (arr.length === 0) return 0;
45 let avg = arr.reduce((a, b) => a + b) / arr.length;
46 return parseFloat(avg.toFixed(decimals));
47}
48
49console.log("\nWith precision:", averagePrecise([1, 2, 3], 2));

Output

Array: [ 10, 20, 30, 40, 50 ]
Average: 30

Using reduce: 12.5

Using forEach: 6

One-liner: 3

With precision: 2

What's going on

arr.reduce((a, b) => a + b, 0) / arr.length. Length 0 → Infinity or NaN. Check length first.