Gioacchino Gargiulo
Gioacchino Gargiulo

Reputation: 37

Minimum and Maximum of an array in JavaScript

I need to sort an array of numbers, so that it returns its minumum and its maximum. The code I've written so far doesn't seem to do anything at all.

function sort(array) {
    arrayNew = [];
    maximum = array[0];
    minimum = array[0];

    for (i = 0; i < array.length; i++) {
        if (maximum < array[i]) {
            maximum = array[i];
        }
    }
    arrayNew.push(maximum);

    for (i = 0; i < array.length; i++) {
        if (minimum > array[i]) {
            minimum = array[i];
        }
    }
    arrayNew.unshift(minumum);
    return arrayNew;
}


var arr1 = [3, 8, 7, 6, 5, -4, 3, 2, 1];
alert(sort(arr1));

Upvotes: 1

Views: 185

Answers (4)

thefourtheye
thefourtheye

Reputation: 239473

  1. minumum is spelled incorrectly. It should have been minimum

  2. Don't use your variables without declaring them with var keyword. Otherwise they will become global properties.

  3. Also, you can have your minimum check also in the same loop as maximum. So, your code can be shortened like this

    function sort(array) {
        var maximum = array[0],
            minimum = array[0],
            i;
    
        for (i = 0; i < array.length; i++) {
            if (maximum < array[i]) {
                maximum = array[i];
            }
    
            if (minimum > array[i]) {
                minimum = array[i];
            }
        }
        return [minimum, maximum];
    }
    
  4. Now that we know, we can do it like this, lets try to shorten it more with ternary operator

    function sort(array) {
        var maximum = array[0],
            minimum = array[0],
            i;
    
        for (i = 0; i < array.length; i++) {
            maximum = maximum < array[i] ? array[i] : maximum;
            minimum = minimum > array[i] ? array[i] : minimum;
        }
        return [minimum, maximum];
    }
    

Upvotes: 1

Gurkan İlleez
Gurkan İlleez

Reputation: 1573

arrayNew.unshift(minumum); is wrong variable minimum

correct one : arrayNew.unshift(minimum);

Upvotes: 0

user235273
user235273

Reputation:

var arr = [ 3, 8, 7, 6, 5, -4, 31, 2, 21, 20, 1 ].sort(function(a, b) { return a - b }),  // [-4, 1, 2, 3, 5, 6, 7, 8, 20, 21, 31]
    min = arr[0],  // min
    max = arr[arr.length-1];  //max

Upvotes: 1

Andy
Andy

Reputation: 63524

In case you didn't know there is a much simpler way to get the min and max values from an array - use Math.min and Math.min with apply:

var min = Math.min.apply(null, arr1);
var max = Math.max.apply(null, arr1);

DEMO

Upvotes: 2

Related Questions