我有一个简单的JavaScript数组对象包含几个数字。
[267, 306, 108]
有没有一个函数能找到这个数组中最大的数?
我有一个简单的JavaScript数组对象包含几个数字。
[267, 306, 108]
有没有一个函数能找到这个数组中最大的数?
当前回答
你可以试试这个,
var arr = [267, 306, 108];
var largestNum = 0;
for(i=0; i<arr.length; i++) {
if(arr[i] > largest){
var largest = arr[i];
}
}
console.log(largest);
其他回答
我发现对于更大的数组(~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.reduce:
[0,1,2,3,4].reduce(function(previousValue, currentValue){
return Math.max(previousValue,currentValue);
});
运行这个:
Array.prototype.max = function(){
return Math.max.apply( Math, this );
};
现在尝试[3,10,2].max()返回10
你也可以使用forEach:
var maximum = Number.MIN_SAFE_INTEGER; Var数组= [-3,-2,217,9,- 8,46]; array.forEach(功能(价值){ If(值> maximum) { 最大值=值; } }); console.log(最大);/ / 217
你可以使用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对于这些函数并不重要,因为它们是静态的。不管传递什么作为上下文,它们都将工作。