尝试返回数组的最小值、最大值和平均值
Posted
技术标签:
【中文标题】尝试返回数组的最小值、最大值和平均值【英文标题】: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;
结束您的功能 - 之后的所有内容都将被忽略。
【参考方案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;
【讨论】:
谢谢。我以前不明白这个概念。现在可以了。以上是关于尝试返回数组的最小值、最大值和平均值的主要内容,如果未能解决你的问题,请参考以下文章