我有一个简单的JavaScript数组对象包含几个数字。
[267, 306, 108]
有没有一个函数能找到这个数组中最大的数?
我有一个简单的JavaScript数组对象包含几个数字。
[267, 306, 108]
有没有一个函数能找到这个数组中最大的数?
当前回答
一个for/of循环解决方案:
Const数= [2,4,6,8,80,56,10]; const findMax =(…numbers) => { let currentMax = numbers[0];/ / 2 For (const number of numbers) { if (number > currentMax) { console.log(数字,currentMax); currentMax = number; } } console.log('最大',currentMax); 返回currentMax; }; findMax数量(…);
其他回答
根据@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;
}
你也可以使用forEach:
var maximum = Number.MIN_SAFE_INTEGER; Var数组= [-3,-2,217,9,- 8,46]; array.forEach(功能(价值){ If(值> maximum) { 最大值=值; } }); console.log(最大);/ / 217
我发现对于更大的数组(~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;
}
基准测试结果
您还可以扩展Array以拥有此函数,并使其成为每个数组的一部分。
Array.prototype.max = function(){return Math.max.apply( Math, this )};
myArray = [1,2,3];
console.log( myArray.max() );
你可以对数组进行降序排序,得到第一项:
[267, 306, 108].sort(function(a,b){return b-a;})[0]