What’s the best way to do that?
Math.max() function. When you pass it an array of 0 or more numbers as arguments, it will select and return the largest of them all.
Math object and its out-of-the-box
Math.max() function. Notice the spelling: the Math object is always spelled with an uppercase “M.” Make sure it’s the same way in your code.
How to Use Math.max()
With the Numbers as Arguments
The simplest, most straightforward way to use the
Math.max() function is to give it the numbers as arguments:
// Returns 5 Math.max(1, 2, 3, 4, 5); // Returns -1 Math.max(-5, -4, -3, -2, -1);
With the Numbers in an Array
If, on more sophisticated implementations, you need to store the numbers in an array, it’s important to know that the
Math.max() function doesn’t accept arrays as input.
So, if you were to store the numbers in an array, you’d need the help of the
apply() method, which literally takes the array of numbers and applies it as arguments to
// Returns 5 let myArray = [1, 2, 3, 4, 5]; Math.max.apply(null, myArray); // Returns -1 let myArray = [-5, -4, -3, -2, -1]; Math.max.apply(null, myArray);
Things to Know
When You Give It An Empty Array
If you don’t give any arguments to the
Math.max() function (in other words, you don’t feed it with any numbers), it will return negative infinity:
// Returns -Infinity let myArray = ; Math.max(myArray);
When You Give It An Array Containing a Non-Number
If one of the arguments that you’re giving the
Math.max() function can’t be converted to a number, it will return
// Returns NaN (Not-a-Number) let myArray = [1, 2, "three", 4, 5]; Math.max(myArray);
Keep these in mind if you come across any “weird” behavior of your function; you might as well be giving it no arguments or, in certain scenarios, arguments of the wrong data type.
Math.max() function is a sleek and efficient way to find the largest number in an array without having to write lines of code and build unnecessary logic for the job.
It introduces no browser compatibility concerns and, as long as you have good control over the inputs as you should, is consistent and reliable. Although there are other solutions out there, this seems to be the best for most implementation scenarios.
Let me and the rest of this post’s readers know in the comments below if you came across any edge cases or limitations that I hadn’t thought of.