数组中对象属性的总和
Sum of object properties within an array
我有一个带有属性的数组,以下面的例子为例:
var arrayPeople = [
{
name: 'joe',
job: 'programmer',
age: 25,
},
{
name: 'bob',
job: 'plumber',
age: 30,
};
];
我想创建一个函数来 return 他们的平均年龄,这是我目前不工作
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;
};
当 运行 这个函数是 不是数字
时我得到的结果
但我可以开始工作的是:
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. 我正在尝试自己做这件事,我不是在找人帮我解决问题,我真的很感激只是一些关于修复什么的提示,或者我需要研究一个概念以了解如何解决这个问题。
谢谢!!
您需要初始化 age
变量 (var age = 0
)
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;
};
console.log(
ageAverage(arrayPeople)
);
在您的变体中,age
变量等于 undefined
,并且 undefined += number
(例如 25)returns NaN
;
也把这一行的,
改成;
来自
for (var i = 0, i < array.length; i++) {
至
for (var i = 0; i < array.length; i++) {
您应该将 for 更改为:
for (var i = 0; i < array.length; i++) 而不是 for (var i = 0, i < array.length; i++)
并赋予年龄初值
var age=0
考虑使用 map
和 reduce
:
arrayPeople.
map(function(item){ return item.age; }).
reduce(function(a, b){ return a + b; }, 0) / arrayPeople.length;
或者正如@KooiInc 指出的 reduce
:
arrayPeople.reduce(function (a,b) { return a + b.age; }, 0) / arrayPeople.length;
一个工作示例:
var arrayPeople = [{
name: 'joe',
job: 'programmer',
age: 25,
}, {
name: 'bob',
job: 'plumber',
age: 30,
}],
average = arrayPeople.reduce(function(a, b) {
return a + b.age;
}, 0) / arrayPeople.length;
document.write(average);
总有一条线。
arrayPeople.reduce((a, o, i, p) => a + o.age / p.length, 0));
console.log(`${[{
name: 'joe',
job: 'programmer',
age: 25,
},
{
name: 'bob',
job: 'plumber',
age: 30,
}
].reduce((a, o, i, p) => a + o.age / p.length, 0)}%`);
我有一个带有属性的数组,以下面的例子为例:
var arrayPeople = [
{
name: 'joe',
job: 'programmer',
age: 25,
},
{
name: 'bob',
job: 'plumber',
age: 30,
};
];
我想创建一个函数来 return 他们的平均年龄,这是我目前不工作
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;
};
当 运行 这个函数是 不是数字
时我得到的结果但我可以开始工作的是:
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. 我正在尝试自己做这件事,我不是在找人帮我解决问题,我真的很感激只是一些关于修复什么的提示,或者我需要研究一个概念以了解如何解决这个问题。
谢谢!!
您需要初始化 age
变量 (var age = 0
)
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;
};
console.log(
ageAverage(arrayPeople)
);
在您的变体中,age
变量等于 undefined
,并且 undefined += number
(例如 25)returns NaN
;
也把这一行的,
改成;
来自
for (var i = 0, i < array.length; i++) {
至
for (var i = 0; i < array.length; i++) {
您应该将 for 更改为:
for (var i = 0; i < array.length; i++) 而不是 for (var i = 0, i < array.length; i++)
并赋予年龄初值
var age=0
考虑使用 map
和 reduce
:
arrayPeople.
map(function(item){ return item.age; }).
reduce(function(a, b){ return a + b; }, 0) / arrayPeople.length;
或者正如@KooiInc 指出的 reduce
:
arrayPeople.reduce(function (a,b) { return a + b.age; }, 0) / arrayPeople.length;
一个工作示例:
var arrayPeople = [{
name: 'joe',
job: 'programmer',
age: 25,
}, {
name: 'bob',
job: 'plumber',
age: 30,
}],
average = arrayPeople.reduce(function(a, b) {
return a + b.age;
}, 0) / arrayPeople.length;
document.write(average);
总有一条线。
arrayPeople.reduce((a, o, i, p) => a + o.age / p.length, 0));
console.log(`${[{
name: 'joe',
job: 'programmer',
age: 25,
},
{
name: 'bob',
job: 'plumber',
age: 30,
}
].reduce((a, o, i, p) => a + o.age / p.length, 0)}%`);