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

[267, 306, 108]

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


当前回答

使用- Array.prototype.reduce()很酷!

[267, 306, 108].reduce((acc,val)=> (acc>val)?acc:val)

式中acc =累加器,val =当前值;

var a = [267, 306, 108].reduce((acc,val)=> (acc>val)?acc:val); 控制台.log(a);

其他回答

你也可以使用forEach:

var maximum = Number.MIN_SAFE_INTEGER; Var数组= [-3,-2,217,9,- 8,46]; array.forEach(功能(价值){ If(值> maximum) { 最大值=值; } }); console.log(最大);/ / 217

根据@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;
}

使用- Array.prototype.reduce()很酷!

[267, 306, 108].reduce((acc,val)=> (acc>val)?acc:val)

式中acc =累加器,val =当前值;

var a = [267, 306, 108].reduce((acc,val)=> (acc>val)?acc:val); 控制台.log(a);

使用箭头函数排序最高和最小值 var =最高(267、306、108700490678355399500800).sort ((a, b) = >{返回b;}) [0] console.log(最高) 最小var =[267、306、108700490678355399500800].sort ((a, b) = >{返回a - b;}) [0] console.log(最小)

Use:

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

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

console.log(largest);