使用 JavaScript 函数在数组中查找最大值

Find the Max Value in an array using JavaScript function

本文关键字:查找 最大值 数组 JavaScript 函数 使用      更新时间:2023-09-26

我有这个函数,目的是找到数组中的最大(数字)元素,该值来自参数。您能否用下面的代码逐行解释一下发生了什么。

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

在经历循环之前,您的函数接受第一个数组元素的值作为"起始"(初始)最大值。该值是4
在每次循环迭代中,每个数组值都与初始"最大值"进行比较。
如果当前值大于以前的最大值 - 该当前值将覆盖它并成为最大值。
但。。。还有更简单更好的方法:是使用内置的Javascript对象,如Math
请考虑以下最大值搜索:

var arr = [4,12,3,80,0,22,56];
var max = Math.max.apply(null, arr);
console.log(max); // 80

上述方法更适合搜索最小值/最大值
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max

第一行。 max 函数传递数组 [4,12,3,8,0,22,56],

第二行。 max 变量设置为数组中的第一项。最大值为 4,

第三行。启动一个 for 循环,它将从 1 开始,并在 arr 数组的长度内继续循环。

第四行。检查当前数组值是否大于最大值。

因此,第一次检查 arr[1] 是否大于 max。如果是,max 设置为 arr[1]第一个循环检查 (12> 4) 是否如此 max = 12

第二次检查 arr[2] 是否大于最大值。第二个循环检查(3> 12)是否不是那么最大= 12

第三次检查 arr[3] 是否大于 max。第三个循环检查 (8> 12) 是否不是那么 max = 12

第四次检查 arr[4] 是否大于 max。第四个循环检查 (0> 12) 是否不是那么 max = 12

第五次检查 arr[5] 是否大于 max。第五个循环检查(22>12)是否如此 max = 22

第六次,它检查 arr[6] 是否大于 max。第六个循环检查 (56> 22) 是否如此 max = 56

第八行。循环已完成,并返回 max。最大值为 56

下面是代码的三个步骤。

  1. 代码开始将数组中的第一个元素与下一个元素进行比较。
  2. 在 if 条件下,它检查最大值,如果条件为 true,则存储最大值(最大值)。
  3. 最后返回最大值。

所以我的建议是使用JavaScript内置的reduce方法。原因如下。

如果数组包含太多元素,Math.max.applyapply 方法将失败或返回错误的结果,因为它们尝试将数组元素作为函数参数传递。

所以使用没有这个问题的reduce方法

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;

手动获取 javascript 中数组的最大和最小数量。

function max(array){
    var max= array[0];
    var min = array[0];
    for(var i=1;i<arr.length;i++){
        if(array[i]>max){
            max= array[i];
        }
        
        if(array[i]<min){
            min=array[i];
        }
        
    }
    console.log(min+","+max);
    }