Javascript 求两个数组的平均值,然后从两个数组中取较大值

Javascript 求两个数组的平均值,然后从两个数组中取较大值,javascript,Javascript,每当我运行它时,它都会给我“第一”而不是“第二”。我的逻辑正确吗?找到两个Avarage然后返回更大的?或者你认为它到底有什么问题 var first = ([100, 80], [100, 100]); function compare(a, b) { sum = 0; for(var i = 0; i < a.length; i++) { sum += first[i]; avg1 = (sum/a.length); } sum2 = 0; for

每当我运行它时,它都会给我“第一”而不是“第二”。我的逻辑正确吗?找到两个Avarage然后返回更大的?或者你认为它到底有什么问题

var first = ([100, 80], [100, 100]);
function compare(a, b) {
  sum = 0;
  for(var i = 0; i < a.length; i++) {
    sum += first[i];
    avg1 = (sum/a.length);
  }

  sum2 = 0;
  for(i = 0; i < b.length; i++) {
    sum2 += first[i];
    avg2 = (sum2/b.length);
  }
  if (avg1 > avg2); {
    return ("first");
  }
  if (false) {
    return ("second");
  }
}
var first=([100,80],[100,100]);
功能比较(a、b){
总和=0;
对于(变量i=0;iavg2){
报税表(“首次”);
}
if(false){
回报(“第二次”);
}
}

如果要获得
a
b
中元素的平均值,需要对这些元素求和,而不是先求
中的元素的和

另外,您还有一个额外的
if(avg1>avg2)
之后,它正在为该条件创建一个空主体,因此
return“first”
被无条件执行

功能比较(a、b){
var总和=0;

对于(var i=0;i有一种更简单的方法来实现这一点

首先,看看如何在JavaScript中查找数字数组的平均值

var average = myArray.reduce(function(a, b) {
    return a + b;
})/myArray.length;
您可以对两个数组执行此操作,并使用返回两个数组中较大的平均值。整个函数如下所示:

var greaterAverage = function (arr1, arr2) {
    return Math.max( arr1.reduce(function(a, b) {
        return a + b;
    }) / arr1.length, arr2.reduce(function(a, b) {
        return a + b;
    }) / arr2.length );
}
如果要返回原始数组或类似“first”的内容,则只需比较平均值:

var greaterAverage = function (arr1, arr2) {
    var avg1 = arr1.reduce(function(a, b) {
        return a + b;
    }) / arr1.length;

    var avg2 = arr2.reduce(function(a, b) {
        return a + b;
    }) / arr2.length;

    if (avg1 < avg2) {
        return avg1; // or return "first";
    } else if (avg1 > avg2) {
        return avg2; // or return "second";
    }
}
var greaterAverage=函数(arr1、arr2){
var avg1=arr1.reduce(函数a、b){
返回a+b;
})/arr1.1长度;
var avg2=arr2.reduce(函数a、b){
返回a+b;
})/2.2长度;
中频(avg1avg2){
返回avg2;//或返回“秒”;
}
}

一种更简单的方法是明确定义平均值

数组的平均值是其组成部分的总和除以其长度。我留下这个值是为了在0长度数组上抛出一个错误,因为根据数学,空数组的平均值是无意义的,但有些人会对此加以防范,并返回零

要对成分求和,请通过添加成员来减少数组

var First=[1,2,3],
第二个=[3,4,5];
函数平均值(A){
var-Total=A.reduce(函数(L,R){返回L+R;});
返回总长度/A.length;
}

window.alert((avg(First)>avg(Second))?“First”:“Second”);
首先,如果else语法错误,则您的
语法错误。
如果else语法错误

if (condition) {
    block of code to be executed if the condition is true
} else { 
    block of code to be executed if the condition is false
}
范例

如果时间少于20:00,则创建“早安”问候语,否则为“晚上好”:

if(时间<20){
问候语=“你好”;
}否则{
问候语=“晚上好”;
}
输出:你好


使用更正的代码检查此JSFIDLE链接

“我的逻辑在这里正确吗?”如果没有得到预期的结果,那么您的逻辑可能不正确。函数的参数是什么?为什么要在两个循环中求和相同的数组?编写
var first=([100,80],[100100])有什么意义;
?逗号运算符返回其第二个参数,因此这相当于
var first=([100100]);
定义了
len
的位置?您发布的代码似乎不完整,因此我们无法运行它。
if(false)
将永远不会执行它的主体。这可能是一个
else
子句。我知道您主要复制了代码,但是:不要忘记局部变量,平均值的计算可以移到循环之外。谢谢,我没有注意到他遗漏了一些
var
声明。
if (time < 20) {
    greeting = "Good day";
} else {
    greeting = "Good evening";
}