【问题标题】:Trying to return min, max, and average values of an array尝试返回数组的最小值、最大值和平均值
【发布时间】:2018-07-16 19:03:30
【问题描述】:

我在尝试生成数组的最小值、最大值和平均值时遇到了困难。我似乎能够毫无问题地返回最小值,但是我尝试将这三个值一起生成,无论是单独还是在数组内部,都会遇到控制台中的输出“未定义”。

这是我正在运行的代码(在控制台中):

function findMinMaxAvg(arr){
  var min = arr[0]; // min
  var max = arr[0]; // max
  var sum = arr[0]; // sum

  for(var i = 1; i < arr.length; i++){
    if (arr[i] < min) {
      min = arr[i];
    }
    if (arr[i] > max) {
      max = arr[i];
    }
    sum = sum + arr[i];
  }
  return min;
  return max;
  return sum / arr.length;

  var avg = sum / arr.length;  // declaring avg variable for later arrnew variable
  var arrnew = [min, max, avg];  // output results into this new array
  return arrnew; // return all three values inside of an array
  console.log(arrnew);
}
findMinMaxAvg([1,5,10,-2]);

【问题讨论】:

  • 看来您需要更多地了解return 关键字的作用。 return min; 结束您的功能 - 之后的所有内容都将被忽略。

标签: javascript arrays max average min


【解决方案1】:

一个函数中不能有多个连续的 return 语句。它总是会在第一个return min 语句中退出函数。

function findMinMaxAvg(arr){
  var min = arr[0]; // min
  var max = arr[0]; // max
  var sum = arr[0]; // sum

  for(var i = 1; i < arr.length; i++){
    if (arr[i] < min) {
      min = arr[i];
    }
    if (arr[i] > max) {
      max = arr[i];
    }
    sum = sum + arr[i];
  }
  return [min, max, sum / arr.length]
}

【讨论】:

  • 就是这样。我以前不明白这个概念。谢谢你,现在我知道了。难怪。
  • 然后您可以将结果解构为var [min, max, avg] = findMinMaxAvg([1,2,3]);
【解决方案2】:

这似乎是你正在尝试的。

    var arr = [2, 3, 5, 6, 7,1, 4, 6, 5]
    var max = arr[0];
    var min = arr[0];
    var sum = arr[0]; 
    for (var i = 1; i < arr.length; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
        if (arr[i] < min) {
            min = arr[i];
        }
        sum = sum + arr[i];
    }
   console.log('max=' +max + 'min='  +min + 'avd=' + sum/arr.length); 

【讨论】:

    【解决方案3】:

    您已经完成了 90%! 从函数返回后,其余代码都不会运行。 所以下面的语句应该被删除,你会得到你期望返回的数组!

      return min;
      return max;
      return sum / arr.length;
    

    【讨论】:

    • 谢谢。我以前不明白这个概念。现在可以了。
    猜你喜欢
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 2018-07-01
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多