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

[267, 306, 108]

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


当前回答

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

其他回答

你可以使用apply函数,调用Math.max:

var array = [267, 306, 108];
var largest = Math.max.apply(Math, array); // 306

它是如何工作的?

apply函数用于调用具有给定上下文和参数的另一个函数,以数组形式提供。min和max函数可以接受任意数量的输入参数:Math。Max (val1, val2,…valN)

如果我们调用:

Math.min.apply(Math, [1, 2, 3, 4]);

apply函数将执行:

Math.min(1, 2, 3, 4);

注意,第一个参数context对于这些函数并不重要,因为它们是静态的。不管传递什么作为上下文,它们都将工作。

我刚开始使用JavaScript,但我认为这个方法会很好:

var array = [34, 23, 57, 983, 198];
var score = 0;

for(var i = 0; i = array.length; i++) {
  if(array[ i ] > score) {
    score = array[i];
  }
}

要找到数组中最大的数字,您只需要使用Math.max(…arrayName);。它是这样工作的:

let myArr = [1, 2, 3, 4, 5, 6];
console.log(Math.max(...myArr));

要了解更多关于Math.max的信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max

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

根据@Quasimondo的评论,这似乎被大部分人忽略了,下面的似乎有最好的表现,如下所示:https://jsperf.com/finding-maximum-element-in-an-array。请注意,虽然对于问题中的数组,性能可能没有显著影响,但对于大型数组,性能变得更重要,并且再次指出,如果数组长度超过65535,使用Math.max()甚至不起作用。看看这个答案。

function largestNum(arr) {
    var d = data;
    var m = d[d.length - 1];
    for (var i = d.length - 1; --i > -1;) {
      if (d[i] > m) m = d[i];
    }
    return m;
}