Javascript 计算数组中对象属性的平均值

Javascript 计算数组中对象属性的平均值,javascript,arrays,average,Javascript,Arrays,Average,我试图计算一周的平均气温,但我不太知道该如何计算。我尝试过一些东西,但最终的结果可能是“NaN”或“Infinity”。肯定是做错了什么 以下是我需要使用的代码: var temperatures; temperatures = new Array(); temperatures["monday"] = 23.5; temperatures["tuesday"] = 22.3; temperatures["wednesday"] = 28.5; temperatures["thursday"

我试图计算一周的平均气温,但我不太知道该如何计算。我尝试过一些东西,但最终的结果可能是“NaN”或“Infinity”。肯定是做错了什么

以下是我需要使用的代码:

var temperatures;

temperatures = new Array();

temperatures["monday"] = 23.5;
temperatures["tuesday"] = 22.3;
temperatures["wednesday"] = 28.5;
temperatures["thursday"] = 23.5;
temperatures["friday"] = 22.3;
temperatures["saturday"] = 28.5;
temperatures["sunday"] = 29.5;
当数组像[0]、[1]而不是包含天数的字符串时,我就可以工作了,但我不知道如何像上面那样工作。另外,如果你有任何建议,请尽量保持代码的基础,因为令人惊讶的是,由于某些原因,“高级代码”在我的课堂上不太受欢迎

感谢阅读。

试试:

var温度; var总和=0, 计数=0; 温度=新阵列; 气温[星期一]=23.5; 气温(星期二)=22.3 ;; 气温[星期三]=28.5; 气温[星期四]=23.5度; 气温[星期五]=22.3; 温度[星期六]=28.5; [星期日]气温=29.5度; 对于温度中的var prop{ 如果温度.hasOwnPropertyprop{ 计数++; 总和+=温度[prop]; } } var平均值=总和/计数;
平均值 平均值就是总温度除以温度数

var temperatures = {},
    length = 0,
    total  = 0;

temperatures["monday"] = 23.5;
temperatures["tuesday"] = 22.3;
temperatures["wednesday"] = 28.5;
temperatures["thursday"] = 23.5;
temperatures["friday"] = 22.3;
temperatures["saturday"] = 28.5;
temperatures["sunday"] = 29.5;

for (var day in temperatures) {
    total += temperatures[day];
    length++;
}

var average = total / length;

请注意,数组没有命名键,只有对象有命名键。如果希望使用键值对,则应尝试使用对象而不是数组

var temperatures;

temperatures = new Object();

temperatures["monday"] = 23.5;
temperatures["tuesday"] = 22.3;
temperatures["wednesday"] = 28.5;
temperatures["thursday"] = 23.5;
temperatures["friday"] = 22.3;
temperatures["saturday"] = 28.5;
temperatures["sunday"] = 29.5;

alert(temperatures["sunday"]);
您将获得键值对js对象, 您可以将其用于平均值:

var sum = 0;
for(key in temperatures)
{
   sum  = sum+temperatures[key];
   console.log(temperatures[key]);
}
alert(sum/7); 

我相信穿越会给你带来麻烦。这是解决办法


如果显示当前用于获取平均值的代码,即使返回的结果不正确,也会很有帮助。这里似乎已经解释过了:数组通过整数索引访问值,对象通过键访问值,这是您试图实现的。你们仔细阅读了这个问题吗?@Manwal很抱歉没有举例说明,但我猜提问者想用键而不是索引来访问变量,并对其进行平均。现在我用Demo更新了我的答案。day现在不是一个全局变量吗?我不确定——这正是我的Netbeans代码高亮显示的内容——如果是这样的话,在上面声明其他变量不是更好吗?@Cold_Class-好眼力,只要在for循环中声明就可以解决这个问题。
var count=0,total=0;
for(t in temperatures)
{
    total = total+temperatures[t]
    count++;
}
alert(total/count);//average