谁能告诉我自己做错了什么?我打印的数组不是正确的顺序。我怎么称呼它?这是javascript。
给定一个数组x(例如[1,5,10,-2]),创建一个算法(指令集),返回一个具有最大值,最小值和平均值的数组([max,min,avg] 。[0,2,4]应该返回[4,0,2])。
我的代码:
api_event(NameOfAPI, Tag, ListOfArgs)
答案 0 :(得分:2)
该功能应如下所示
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
}
答案 1 :(得分:1)
试试这个......
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];
}
答案 2 :(得分:0)
你已经拥有了min,max和avg的值(你有总和,所以你可以计算它)。只需创建一个新数组(不是原始的arr),将这些值(min,max和avg)添加到它并返回它。
答案 3 :(得分:0)
您的代码没有以错误的顺序返回值,它返回原始数组而不是具有max,min和average的数组。
看起来这些项目属于wron g顺序的原因是您选择的测试数据恰好与您期望的结果相似。如果您选择输入与输出不相似的数据,例如[1,2,3,4,100]
,您会看到返回相同的数组。
只需使用值创建一个新数组并将其返回:
return [ max, min, avg ];
使用您发布的新代码,我发现了一些问题:
sum
变量,因此它将包含undefined
。添加到结果时,结果将继续为undefined
。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];
}
答案 4 :(得分:0)
不确定这是否有效,但您可以使用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];
};
这假设您尝试使用数组来执行此操作(如果数组中的数字存储为字符串,它也会起作用) 没有测试过,但应该可以正常工作。