Objective
Given an array of numbers, find the minimum.
Description
In a list of numbers, the smallest number is often referred to as the minimum.
In this exercise, you have to create a function min()
to find and return the minimum element of a given array of numbers.
Here's the signature of the function:
function min(arr) {
// Your code here.
}
arr
is the array whose minimum we ought to find.
If the given array is empty, return the special number Infinity
; otherwise return the minimum value.
Hints
Hint 1
Iterate over the given array, and at each iteration keep track of the minimum seen thus far.
Hint 2
In the beginning, assume Infinity
as the minimum.
New file
Inside the directory you created for this course on JavaScript, create a new folder called Exercise-8-Finding-The-Minimum and put the .html solution files for this exercise within it.
Solution
It's impossible to find the minimum value of an arbitrary array without iterating over all the elements therein.
Likewise, the first and foremost thing we'll do is to set up a for
loop iterating over arr
:
function min(arr) {
for (var i = 0; i < arr.length; i++) {
// Code to go here.
}
}
The next thing is to check each element inside the loop with the previously-known minimum. If it's smaller than the previously-known minimum, then obviously we need to change that value and point it to the current element.
To start with, however, we don't have any previously-known minimum. But we can use one — the special number Infinity
. Every number is less than Infinity
, hence it could be a good candidate for the previously-known minimum before the loop begins.
Here's the complete code:
function min(arr) {
var minValue = Infinity;
for (var i = 0; i < arr.length; i++) {
if (arr[i] < minValue) {
minValue = arr[i];
}
}
return minValue;
}
The variable minValue
serves to keep track of the minimum seen thus far in the array. In the end, it's returned. If the given array is empty, the loop's body doesn't execute as its condition doesn't get fulfilled, and likewise Infinity
is returned, just as desired.
Let's try running this on a couple of arrays:
min([-5, 1, 0, 5, 6])
min([0, 0, 0])
min([1, 9, 10, 100])
min([])
Perfect.