我有一个简单的JavaScript数组对象包含几个数字。
[267, 306, 108]
有没有一个函数能找到这个数组中最大的数?
我有一个简单的JavaScript数组对象包含几个数字。
[267, 306, 108]
有没有一个函数能找到这个数组中最大的数?
当前回答
在数组中返回最大数字的解。
const largestOfFour = arr => {
let arr2 = [];
arr.map(e => {
let numStart = -Infinity;
e.forEach(num => {
if (num > numStart) {
numStart = num;
}
})
arr2.push(numStart);
})
return arr2;
}
其他回答
几乎所有的答案都使用Math.max.apply(),这很好,但它有局限性。
函数参数被放置在堆栈上,这有一个缺点——限制。因此,如果你的数组大于限制,它将失败与RangeError:最大调用堆栈大小超过。
为了找到一个调用堆栈大小,我使用了下面的代码:
var ar = [];
for (var i = 1; i < 100*99999; i++) {
ar.push(1);
try {
var max = Math.max.apply(Math, ar);
} catch(e) {
console.log('Limit reached: '+i+' error is: '+e);
break;
}
}
它在我的机器上的Firefox上是最大的——591519。这意味着如果数组包含超过591519个项,Math.max.apply()将导致RangeError。
这个问题的最佳解决方案是迭代方法(来源:https://developer.mozilla.org/):)
max = -Infinity, min = +Infinity;
for (var i = 0; i < numbers.length; i++) {
if (numbers[i] > max)
max = numbers[i];
if (numbers[i] < min)
min = numbers[i];
}
我在我的博客上写过这个问题。
使用Array.reduce:
[0,1,2,3,4].reduce(function(previousValue, currentValue){
return Math.max(previousValue,currentValue);
});
使用- 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);
一个递归的方法如何使用三元运算符
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);
我刚开始使用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];
}
}