【发布时间】:2015-01-10 18:40:26
【问题描述】:
我有一个带有属性的数组,例如:
var arrayPeople = [
{
name: 'joe',
job: 'programmer',
age: 25,
},
{
name: 'bob',
job: 'plumber',
age: 30,
};
];
我想创建一个函数来返回他们的平均年龄,这是我目前所拥有的不起作用
var ageAverage = function(array) {
var age = 0, average;
for (var i = 0; i < array.length; i++) {
age += array[i].age;
}
average = age / array.length;
return average;
};
我在运行这个函数时得到的是Not A Number
但我可以去工作的是:
var ageAverage = function(array) {
var age = 0, average;
for (var i = 0; i < array.length; i++) {
age = array[0].age;
}
average = age / array.length;
return average;
};
这里的细微差别是我去掉了+=,只是把它变成了=,我去掉了变量i的使用,只是给了它数组的第一个索引。因此,在执行此操作时,我知道该函数正确地将参数数组替换为 arrayPeople,但我的 for 循环中出现了问题,阻止 i 变为 0 和 1(arrayPeople 的索引)。
P.S. 我正在尝试自己做这件事,我并不是在找人来为我解决问题,我真的很感激一些关于要解决什么问题的提示,或者也许是概念我需要研究了解如何解决这个问题。
谢谢!!
【问题讨论】:
-
尝试将 array[i].age 转换为数字。还要初始化变量,这是很好的做法。不要使用数组作为变量的名称,在某些语言中它是保留字。还要检查你的对象数组,有一些错误(逗号和分号)
-
对象数组中特定属性值的总和:
ARRAYNAME.reduce(function (a,b) { return a + b.PROPERTYNAME; }, 0)
标签: javascript for-loop