How to find the second largest element in a user-input JavaScript array?

Finding the second largest element in a JavaScript array requires comparing elements and tracking the two highest values. Here are several approaches to accomplish this task.

Method 1: Using Single Pass Iteration

This approach iterates through the array once, maintaining variables for the largest and second largest elements:

var numbers = [10, 50, 80, 60, 89];
var firstLargerNumber = Number.MIN_SAFE_INTEGER;
var secondlargerNumber = firstLargerNumber;

for(var tempNumber of numbers){
    if(tempNumber > firstLargerNumber){
        secondlargerNumber = firstLargerNumber;
        firstLargerNumber = tempNumber;
    }
    else if(tempNumber > secondlargerNumber){
        secondlargerNumber = tempNumber;
    }
}

console.log("The second largest number = " + secondlargerNumber);
The second largest number = 80

Method 2: Using Sort Method

Sort the array in descending order and pick the second element:

var numbers = [10, 50, 80, 60, 89];
var sortedNumbers = numbers.sort((a, b) => b - a);
console.log("Sorted array:", sortedNumbers);
console.log("Second largest number = " + sortedNumbers[1]);
Sorted array: [ 89, 80, 60, 50, 10 ]
Second largest number = 80

Method 3: Using Math.max with Array Filter

Find the maximum, then find the maximum of remaining elements:

var numbers = [10, 50, 80, 60, 89];
var largest = Math.max(...numbers);
var remainingNumbers = numbers.filter(num => num !== largest);
var secondLargest = Math.max(...remainingNumbers);

console.log("Largest number:", largest);
console.log("Second largest number:", secondLargest);
Largest number: 89
Second largest number: 80

Handling Edge Cases

Consider arrays with duplicate values or insufficient elements:

function findSecondLargest(arr) {
    if (arr.length < 2) {
        return "Array must have at least 2 elements";
    }
    
    var uniqueNumbers = [...new Set(arr)].sort((a, b) => b - a);
    
    if (uniqueNumbers.length < 2) {
        return "Array must have at least 2 unique elements";
    }
    
    return uniqueNumbers[1];
}

console.log(findSecondLargest([5, 5, 5])); // Not enough unique elements
console.log(findSecondLargest([10, 20])); // Valid case
console.log(findSecondLargest([30, 10, 20, 30])); // Duplicates handled
Array must have at least 2 unique elements
20
20

Comparison of Methods

Method Time Complexity Space Complexity Handles Duplicates
Single Pass O(n) O(1) Yes
Sort Method O(n log n) O(n) Yes
Math.max with Filter O(n) O(n) Needs modification

Conclusion

The single-pass iteration method is most efficient for finding the second largest element. For simpler code with acceptable performance, the sort method works well for smaller arrays.

Updated on: 2026-03-15T23:18:59+05:30

604 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements