返回数组中最大数字的函数

时间:2019-11-01 19:53:47

标签: javascript arrays node.js

创建一个称为“最大”的函数,该函数接受数字数组并返回最大数字。

我创建了最大的函数。我做了一个for循环来检查数组中最大的数字。

function largest(a){
  const num = 0;
  for (let i = 0; i < a.length; i++){
    if (a[i] >= num){
      num = a[i];
      return num;
    }
  }
}
module.exports.largest = largest;

该代码不起作用。

2 个答案:

答案 0 :(得分:1)

您将num变量标记为常量。这意味着它不会根据您的比较进行更新。改为使用let num = 0;

另外,看看您的范围。在if语句内部,检查该数组中的第一个元素,将其与最初为0的num比较,然后立即返回。您需要将return语句置于循环范围之外。

答案 1 :(得分:0)

首先,如果您查看开发人员工具控制台,将会看到此错误:

  

TypeError:对const num的无效分配

它与以下行有关:

num = a[i];

您已经用num定义了const num = 0,但是以后不能更改用const定义的变量(因此会出现错误),因此您的定义应改用let。 / p>

第二,一旦该代码不会导致错误,就是您的函数返回得太早的问题。您的退货正在循环中-完成第一项检查后,您将返回并且循环不会继续进行。因此,您可以将返回的代码移到循环后的 行,以确保所有迭代都可以运行。

function largest(a){
  let num = 0;
  for (let i = 0; i < a.length; i++){
    if (a[i] >= num){
      num = a[i];
    }
  }
  return num;
}

const arr = [1, 141, 23, 10, 9, 92];
console.log(largest(arr));

有两种快捷方式可以在您使用的数组中查找数量最大的快捷方式:

第一个spreads出数组,以便Math.max可以使用它。

const arr = [1, 141, 23, 10, 9, 92];
console.log(Math.max(...arr));

或者,您可以将数组从最小到最大排序,然后弹出最后一个元素。

const arr = [1, 141, 23, 10, 9, 92];
console.log(arr.sort((a, b) => a > b).pop());