JavaScript
// Method 1: Using for loop
function averageLoop(arr) {
if (arr.length === 0) return 0;
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum / arr.length;
}
let numbers = [10, 20, 30, 40, 50];
console.log("Array:", numbers);
console.log("Average:", averageLoop(numbers));
// Method 2: Using reduce
function averageReduce(arr) {
if (arr.length === 0) return 0;
let sum = arr.reduce((acc, num) => acc + num, 0);
return sum / arr.length;
}
console.log("\nUsing reduce:", averageReduce([5, 10, 15, 20]));
// Method 3: Using forEach
function averageForEach(arr) {
if (arr.length === 0) return 0;
let sum = 0;
arr.forEach(num => sum += num);
return sum / arr.length;
}
console.log("\nUsing forEach:", averageForEach([2, 4, 6, 8, 10]));
// Method 4: One-liner with reduce
const average = arr => arr.length ? arr.reduce((a, b) => a + b) / arr.length : 0;
console.log("\nOne-liner:", average([1, 2, 3, 4, 5]));
// Method 5: With precision
function averagePrecise(arr, decimals = 2) {
if (arr.length === 0) return 0;
let avg = arr.reduce((a, b) => a + b) / arr.length;
return parseFloat(avg.toFixed(decimals));
}
console.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
This program demonstrates different methods to calculate the average of array elements.
Average Formula
Average = Sum of all elements / Number of elements
Method 1: For Loop
Traditional iterative approach:
javascriptlet sum = 0; for (let i = 0; i < arr.length; i++) { sum += arr[i]; } return sum / arr.length;
Method 2: Reduce
Functional approach:
javascriptlet sum = arr.reduce((acc, num) => acc + num, 0); return sum / arr.length;
Reduce Syntax:
javascriptarr.reduce((accumulator, currentValue) => { // return new accumulator }, initialValue);
Method 3: ForEach
Iterate and accumulate:
javascriptlet sum = 0; arr.forEach(num => sum += num); return sum / arr.length;
ForEach vs For Loop:
- ForEach: Functional, can't break
- For loop: Can break/continue, more control
Method 4: Arrow Function One-Liner
Concise ES6 syntax:
javascriptconst average = arr => arr.length ? arr.reduce((a, b) => a + b) / arr.length : 0;
Ternary Operator:
- Checks if array has elements
- Returns 0 if empty (avoid division by zero)
Method 5: With Precision
Control decimal places:
javascriptreturn parseFloat(avg.toFixed(decimals));
Number Methods:
toFixed(n): Rounds to n decimals, returns stringparseFloat(): Converts string to number
Edge Cases:
- Empty array: Return 0 or handle error
- Single element: Returns that element
- Negative numbers: Works normally
When to Use:
-
Loop: Learning, simple
-
Reduce: Modern, functional
-
One-liner: Quick calculations
-
Precise: When decimal control needed