JavaScript中数组的最小值和最大值

时间:2014-10-22 10:21:47

标签: javascript arrays

我需要对一组数字进行排序,以便返回其最小值和最大值。我到目前为止编写的代码似乎根本没有做任何事情。

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));

4 个答案:

答案 0 :(得分:2)

如果您不知道有更简单的方法从数组中获取最小值和最大值 - 请使用Math.minMath.minapply

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

DEMO

答案 1 :(得分:1)

  1. minumum拼写错误。应该是minimum

  2. 请勿在未使用var关键字声明变量的情况下使用变量。否则他们将成为全球财产。

  3. 此外,您还可以在与maximum相同的循环中进行最低限度检查。因此,您的代码可以像这样缩短

    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. 现在我们知道,我们可以这样做,让我们尝试用三元运算符来缩短它

    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];
    }
    

答案 2 :(得分:1)

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

答案 3 :(得分:0)

arrayNew.unshift(minumum);是错误的变量minimum

正确答案:arrayNew.unshift(minimum);