Javascript - 函数总是返回 0(对于循环不执行)

Javascript - function always returns 0 (for loop not executing)

本文关键字:循环 执行 于循环 返回 Javascript 函数      更新时间:2023-09-26

我正在为freeCodeCamp做一个编码练习。该练习的目的是将一个包含 2 个数字的数组作为输入。它应该返回这两个数字的总和以及它们之间的所有数字。

我尝试使用 Math.min() 编写一个简单的 for 循环,并将Math.max()作为参数,但不知何故,我的函数总是返回 0。基本逻辑是让 for 循环从数组中的最小数字开始,然后递增 1,直到到达数组中的最大数字,并始终将该数字添加到输出变量中。

function sumAll(arr) {
  var outcome = 0;
  for(var x = Math.min(arr); x<Math.max(arr); x++) {
    outcome += x;
  }
  return outcome;
}
sumAll([1, 4]);

任何帮助,不胜感激。

Math.minMath.max不接受列表作为参数。如果要对它们应用列表,请使用 Math.min.apply(Math, arr)

Math.minMath.max 不将数组作为参数,而是将数字列表作为单独的参数。

要使这些方法在数组上工作,请使用以下技巧:

Math.min.apply(Math, [1,2,3]) // --> 1

Math.max也是如此

你用的是Math.maxMath.min错了。要将它们与数组一起使用,您可以使用扩展运算符。(注意:扩展运算符在 ECMAScript 6 中是新的,因此在旧版浏览器中不受支持。见下文:

function sumAll(arr) {
  var outcome = 0;
  for(var x = Math.min(...arr); x<Math.max(...arr); x++) {
    outcome += x;
  }
  return outcome;
}
sumAll([1, 4]);

有关更多详细信息,请参阅 MDN:

  • 数学.max
  • 数学分钟分
  • 点差运算符

问题是Math.min ()Math.max ()不将数组作为参数。这是一个可以接受的替代方案吗?

function sumAll(min, max) {
  var outcome = 0;
  for(var x = min; x<max; x++) {
    outcome += x;
  }
  return outcome;
}
sumAll(1,4);

其他一些提供了从数组中获取最低/最高数字的方法。

错误在 Math.min(arr) 中。 Math.min(arr)评估为NaN。如果需要从arr获取最小数字值,请改用Math.min.apply(Math, arr)

祝你好运!

试试这个

 function sumAll(arr) {
  console.log(arr);
  var outcome = 0;
  for(var x = Math.min(...ar1); x<Math.max(...ar1); x++) {
    outcome += x;
  }
  return outcome;
}

Math.min(...ar1)偏执中的三个点称为扩散运算符

spread 运算符允许在需要多个参数(用于函数调用(或多个元素(用于数组文本(的位置扩展表达式。

页面链接

function sum(arr) {
    var min = arr[0] < arr[1] ? arr[0] : arr[1],
    max = arr[0] > arr[1] ? arr[0] : arr[1],
    result = 0;
    for (var i = min; i <= max; i++) {
      result += i;
    }
    return result;
 }

实际上,您的代码永远不会进入 for 循环,因为在 for 循环初始化部分中,您将x分配数组的最小值,然后一旦 agin,您将数组的 x 与数组的最小值进行比较x<Math.max(arr)因此条件失败。 则outcome始终为 0。