[英]Sum of object properties within an array
我有一個包含屬性的數組,例如:
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;
};
運行此函數時我得到的是非數字
但我能開展的工作是:
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循環中出現了一些問題,即阻止我變為0和1(arrayPeople的索引)。
PS我試圖自己做這個,我不是在找人為我做問題,我真的很感激一些關於修復什么的提示或者我需要研究理解如何修復的概念這個問題。
謝謝!!
考慮使用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);
你需要初始化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)返回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
總有一個單行。
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)}%`);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.