使用JavaScript函数查找数组中的最大值
我有这个函数,目的是找到数组中的最大(数字)元素,值来自一个参数。我很难理解逻辑,我又老又慢,请原谅。你能用下面的代码逐行解释一下发生了什么事吗使用JavaScript函数查找数组中的最大值,javascript,function,Javascript,Function,我有这个函数,目的是找到数组中的最大(数字)元素,值来自一个参数。我很难理解逻辑,我又老又慢,请原谅。你能用下面的代码逐行解释一下发生了什么事吗 function max(arr){ var max = arr[0]; for(var i=1; i<arr.length; i++){ if(arr[i] > max){ max = arr[i]; } } return max; } max([4,12,3,8,0,22,56]); //outpu
function max(arr){
var max = arr[0];
for(var i=1; i<arr.length; i++){
if(arr[i] > max){
max = arr[i];
}
}
return max;
}
max([4,12,3,8,0,22,56]); //output is 56
功能最大值(arr){
var max=arr[0];
对于(变量i=1;i最大值){
max=arr[i];
}
}
返回最大值;
}
最大值([4,12,3,8,0,22,56])//产量为56
在执行循环之前,函数接受第一个数组元素的值作为“起始”(初始)最大值。该值为4
在每次循环迭代中,将每个数组值与初始“最大值”进行比较
如果当前值大于以前的最大值,则当前值将覆盖它并成为最大值
但是有一种更简单更好的方法:使用内置Javascript对象,比如
Math
考虑下面的最大值搜索:
var arr = [4,12,3,80,0,22,56];
var max = Math.max.apply(null, arr);
console.log(max); // 80
上述方法更适合于搜索最小/最大值。第一行。将max函数传递给数组[4,12,3,8,0,22,56] 第二行。max变量设置为数组中的第一项。马克斯4岁 第三行。将启动一个for循环,该循环将从1开始,并在arr数组的长度内保持循环 第四行。检查当前数组值是否大于最大值 所以,第一次检查arr[1]是否大于max。如果是,max设置为arr[1] 第一个循环检查(12>4)是否为so max=12 第二次检查arr[2]是否大于最大值。 第二个循环检查(3>12)是否为最大值=12 第三次检查arr[3]是否大于最大值。 第三个循环检查(8>12)是否为最大值=12 第四次检查arr[4]是否大于最大值。 第四个循环检查(0>12)是否不是这样max=12 第五次检查arr[5]是否大于最大值。 第五个循环检查(22>12)是否为最大值=22 第六次检查arr[6]是否大于最大值。 第六个循环检查(56>22)是否为最大值56
第八行。循环已完成,返回max。max是56,下面是代码的三个步骤
var arr = [2,4,6];
var max = arr.reduce(function(a, b) {
return Math.max(a, b);
});
console.log(max);
另一种使用reduce的方法:
。reduce((a,c)=>c>a?c:a,0)
在我的例子中,必须找到所有的最大值
var max = -Infinity, result = [];
for (var i = 0; i < arr.length; ++i) {
if (arr[i] < max) continue;
if (arr[i] > max) {
result = [];
max = arr[i];
}
result.push(max);
}
return result; // in case of number of occurrences of max values return result.length;
var max=-Infinity,result=[];
对于(变量i=0;i最大值){
结果=[];
max=arr[i];
}
结果:推力(最大值);
}
返回结果;//如果出现最大值的次数,返回result.length;
函数“max”用数组第一个元素的值设置当前最大值;然后在for循环中,它遍历数组的所有元素(从具有位置1的元素开始),并应用以下逻辑:当前元素是否大于当前最大值?如果是,则当前元素为新的最大值,并测试以下元素;如果不是,则只测试后续元素。检查完数组的所有元素后,函数返回最大值。您到底不明白什么?它将第一个元素标记为max,然后迭代数组中的每个元素,检查是否有更大的元素。然后它返回实际的最大值。谢谢大家,现在有点清楚了,我想我需要更多这样的例子。。类似于问题和解决方案的方法。