我有一个简单的JavaScript数组对象包含几个数字。

[267, 306, 108]

有没有一个函数能找到这个数组中最大的数?


当前回答

我发现对于更大的数组(~100k个元素),它实际上是用一个简单的for循环迭代数组,执行比Math.max.apply()好30%:

function mymax(a)
{
    var m = -Infinity, i = 0, n = a.length;

    for (; i != n; ++i) {
        if (a[i] > m) {
            m = a[i];
        }
    }

    return m;
}

基准测试结果

其他回答

求最大值和最小值的简单和手动的方法。这段代码比Math.max.apply快得多;我已经在数组中尝试了多达1000k个数字。

function findmax(array)
{
    var max = 0;
    var a = array.length;
    for (counter=0;counter<a;counter++)
    {
        if (array[counter] > max)
        {
            max = array[counter];
        }
    }
    return max;
}

function findmin(array)
{
    var min = array[0];
    var a = array.length;
    for (counter=0;counter<a;counter++)
    {
        if (array[counter] < min)
        {
            min = array[counter];
        }
    }
    return min;
}

一个递归的方法如何使用三元运算符

const findMax = (arr, max, i) => arr。长度=== I ?马克斯: findMax(arr, arr[i] > max ?Arr [i]: max, ++i) Const arr = [5,34, 2,1,6,7,9,3]; const max = findMax(arr, arr[0], 0) console.log (max);

let array = [267, 306, 108]
let longest = Math.max(...array);

简单的一行

[].sort().pop()

Use:

var arr = [1, 2, 3, 4];

var largest = arr.reduce(function(x,y) {
    return (x > y) ? x : y;
});

console.log(largest);