【问题标题】:A function that returns the largest number in an array返回数组中最大数的函数
【发布时间】:2020-02-28 02:23:21
【问题描述】:

创建一个名为 maximum 的函数,它接受一个数字数组并返回最大的数字。

我创建了最大的函数。我做了一个 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;

代码不起作用。

【问题讨论】:

标签: javascript arrays node.js


【解决方案1】:

您将num 变量标记为常量。这意味着它不会随着您的比较而更新。请改用let num = 0;

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

【讨论】:

    【解决方案2】:

    首先,如果你查看你的开发者工具控制台,你会看到这个错误:

    TypeError: 对 const num 的分配无效

    它与这一行有关:

    num = a[i];
    

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

    其次,一旦该代码不会导致错误,就是您的函数返回过早的问题。您的返回发生在循环中 - 一旦您完成第一次检查,您返回并且循环不会进一步进行。因此,您将 return 移到循环之后的行 以确保所有迭代都运行。

    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());

    【讨论】:

    • 我只是 喜欢 知道该否决票的解释。
    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多