Javascript 按该顺序返回的最大/最小/平均数组
谁能告诉我我做错了什么?我打印阵列的顺序不对。我怎么称呼它呢?顺便说一下,这是javascript 给定一个数组x(例如[1,5,10,-2]),创建一个算法(指令集),该算法返回一个包含最大值、最小值和平均值([max,min,avg])的数组。ex[0,2,4]应返回[4,0,2]) 我的代码:Javascript 按该顺序返回的最大/最小/平均数组,javascript,arrays,Javascript,Arrays,谁能告诉我我做错了什么?我打印阵列的顺序不对。我怎么称呼它呢?顺便说一下,这是javascript 给定一个数组x(例如[1,5,10,-2]),创建一个算法(指令集),该算法返回一个包含最大值、最小值和平均值([max,min,avg])的数组。ex[0,2,4]应返回[4,0,2]) 我的代码: function maxMinAvg(arr) { var newarr= []; var max = arr[0]; var min = arr[0]; sum =
function maxMinAvg(arr) {
var newarr= [];
var max = arr[0];
var min = arr[0];
sum = sum + arr[0];
var avg = sum/arr.length;
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];
}
newarr.push([max[i],min[i],avg[i]]);
}
return newarr;
函数maxMinAvg(arr){
var newarr=[];
var max=arr[0];
var min=arr[0];
sum=sum+arr[0];
var avg=总和/平均长度;
对于(变量i=1;i最大值){
max=arr[i];
}
如果(arr[i]
您已经有了最小值、最大值和平均值(您已经有了总和,可以进行计算)。只需创建一个新数组(而不是原始arr),将这些值(最小值、最大值和平均值)添加到其中并返回。您的代码没有按错误的顺序返回值,而是返回原始数组,而不是返回具有最大值、最小值和平均值的数组
这些项看起来是按wron g顺序排列的,原因是您选择的测试数据恰好与您期望的结果相似。如果选择输入与输出不太相似的数据,例如[1,2,3,4100]
,您会看到返回的是相同的数组
只需使用这些值创建一个新数组并返回它:
return [ max, min, avg ];
编辑:
使用您发布的新代码,我发现了一些问题:
- 它在计算所有项目的总和之前先计算平均值。它只是使用第一项
- 它不会初始化
变量,因此它将包含sum
未定义的
。当添加到它时,结果将继续是
未定义的
变量不是局部变量,因此它可能会与其他代码相互干扰sum
- 它将一个数组推入数组中,因此您将得到一个或多个数组作为结果,而不是数组
- 它将
、min
和max
变量作为数组放入结果中avg
function maxMinAvg(arr) {
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];
}
var avg = sum / arr.length;
return [max, min, avg];
}
函数maxMinAvg(arr){
var max=arr[0];
var min=arr[0];
var总和=arr[0];
对于(变量i=1;i最大值){
max=arr[i];
}
如果(arr[i]
函数应该如下所示
function maxMinAvg(arr) {
var max = arr[0];
var min = arr[0];
var sum = arr[0]; //changed from original post
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];
}
return [max, min, sum/arr.length]; //changed from original post
}
函数maxMinAvg(arr){
var max=arr[0];
var min=arr[0];
var sum=arr[0];//从原始post更改
对于(变量i=1;i最大值){
max=arr[i];
}
如果(arr[i]
试试这个
function maxMinAvg(arr) {
var max = arr[0];
var min = arr[0];
var sum = 0 ;
arr.forEach(function(value){
if(value > max)
max = value;
if(value < min)
min = value;
sum +=value;
})
var avg = sum/arr.length;
return [max,min,avg];
函数maxMinAvg(arr){
var max=arr[0];
var min=arr[0];
var总和=0;
arr.forEach(函数(值){
如果(值>最大值)
最大值=最大值;
如果(值<最小值)
最小值=数值;
总和+=数值;
})
var avg=总和/平均长度;
返回值[最大值、最小值、平均值];
}不确定这是否有效,但您可以使用arr.sort()函数对其进行排序,得到最小值和最大值,然后添加所有值并查找平均值
function maxMinMean(arr){
arr.sort();
var sum = 0;
for(var i=0, i<arr.length, i++){
sum = sum + +arr[i];
};
return [+arr[length-1], +arr[0], sum/arr.length];
};
函数maxMinMean(arr){
arr.sort();
var总和=0;
对于(var i=0),为什么返回数组而不修改它?返回原始数组。<代码>返回[max,min,avg];< /> >我如何以max、min、avg顺序返回它?考虑在函数中做任何事情之前检查数组长度,因为如果收到空数组,此代码将中断。