从数组中获取最大数量

时间:2018-02-09 20:00:39

标签: javascript arrays

我知道使用Math.max()的解决方案,但我希望有人可以解释为什么以下不起作用。

array = [4, 5, 1, 3]

for (var i = 0; i < array.length; i++) {
  var num = 0;  
  if (array[i]> num) {
    num = array[i];
  }
}

以上只是将数组中的最后一个数字设为num。所以我的猜测是array[i]并不是在条件中出现的数字(但可能是一个字符串)。请原谅我对JS的不完全理解。非常感谢任何帮助!

3 个答案:

答案 0 :(得分:4)

您一直在循​​环中将num重置为0。您需要在外部移动变量声明和赋值:

array = [4, 5, 1, 3]

var num = 0;  
for (var i = 0; i < array.length; i++) {
  if (array[i]> num) {
    num = array[i];
  }
}
console.log(num);

答案 1 :(得分:4)

您的问题的真正答案是学习如何调试JavaScript代码。您的Web浏览器内置了一个调试器,可让您逐步执行代码语句,并在每一步中查看所有变量。请试试这个;它会对你有很大的帮助。

只需在第一行代码前添加debugger;语句,然后打开开发人员工具并重新加载页面。调试器将在该语句上停止,然后使用调试器中的Step In按钮单步执行代码。

为了让您轻松入门,以下是原始代码的副本(带有错误)作为添加了debugger;语句的代码段:

function test() {
  debugger;

  array = [4, 5, 1, 3]

  for (var i = 0; i < array.length; i++) {
    var num = 0;  
    if (array[i]> num) {
      num = array[i];
    }
  }
}
 
test();

最好将您正在测试的代码放在函数中,就像我在这里所做的那样。这使您可以在没有标准全局变量和函数的情况下查看局部变量。

打开开发人员工具,然后运行代码段,然后使用上面提到的单步按钮。

每个浏览器都内置了以类似方式工作的开发人员工具。例如,这是guide to the Chrome DevTools

答案 2 :(得分:1)

只是一些提示:

  • 在顶部声明所有变量。
  • 用于获取某个最小值或最大值的第一个值作为开始值和比较值。
  • 从第二项开始迭代,因为你已经拿到了第一项。

var array = [4, 5, 1, 3],
    i,
    max = array[0];

for (i = 1; i < array.length; i++) {
    if (max < array[i]) {
        max = array[i];
    }
}

console.log(max);