我有一个简单的JavaScript数组对象包含几个数字。
[267, 306, 108]
有没有一个函数能找到这个数组中最大的数?
我有一个简单的JavaScript数组对象包含几个数字。
[267, 306, 108]
有没有一个函数能找到这个数组中最大的数?
当前回答
使用箭头函数排序最高和最小值 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);
我发现对于更大的数组(~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;
}
基准测试结果
要找到数组中最大的数字,您只需要使用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
辞职拯救:
Array.max = function( array ){
return Math.max.apply( Math, array );
};
警告:由于在某些虚拟机上参数的最大数量低至65535,如果您不确定数组有那么小,请使用for循环。
使用冒泡排序找到最大和最小值
Var arr = [267, 306, 108]; (i = 0 k = 0;我< arr.length;我+ +){ (j = 0;<我;j + +) { 如果(arr[我]> arr [j]) { K = arr[i]; Arr [i] = Arr [j]; r[j] = k; } } } console.log('最大数字:'+ arr[0]); console.log('最小值:'+ arr[arr.length-1]);