Jay*_*n G 5 javascript arrays average object filter
我试图找到给定数组中女性的平均值
sortArray([
{name:'Sarah', gender:'female', age:25},
{name:'Tom', gender:'male', age:18},
{name:'Tim', gender:'male', age:65},
{name:'Kim', gender:'female', age:58}
]);
Run Code Online (Sandbox Code Playgroud)
这是我在下面的
function averageFemale(list)
{
let sum = 0;
let femaleCount = 2;
let avg = sum / femaleCount;
for (let i = 0, i < list.length; i++)
{
sum += list[i];
}
return avg;
}
Run Code Online (Sandbox Code Playgroud)
Kev*_*Bot 17
您可以将“女性”过滤到一个新数组,然后将其减少到所有年龄的总数,然后使用女性数组的长度将总数除以:
const people = [{name:'Sarah', gender:'female', age:25}, {name:'Tom', gender:'male', age:18}, {name:'Tim', gender:'male', age:65}, {name:'Kim', gender:'female', age:58}];
const females = people.filter(person => person.gender === 'female');
const average = females.reduce((total, next) => total + next.age, 0) / females.length;
console.log(average);Run Code Online (Sandbox Code Playgroud)
你也可以:
.filter()以仅获取具有genderas 的对象female。.reduce()获得青睐的总和。演示:
let data = [
{name:'Sarah', gender:'female', age:25},
{name:'Tom', gender:'male', age:18},
{name:'Tim', gender:'male', age:65},
{name:'Kim', gender:'female', age:58}
];
let filteredData = data.filter(({ gender }) => gender == 'female'),
avg = filteredData.reduce((r, c) => r + c.age, 0) / filteredData.length;
console.log(avg);Run Code Online (Sandbox Code Playgroud)
您需要检查gender属性并求和age并增加计数器,因为您事先并不知道这一点。
function averageFemale(list) {
var sum = 0,
count = 0,
i;
for (i = 0; i < list.length; i++) {
if (list[i].gender === 'female') {
sum += list[i].age;
++count;
}
}
return sum / count;
}
var array = [{ name: 'Sarah', gender: 'female', age: 25 }, { name: 'Tom', gender: 'male', age: 18 }, { name: 'Tim', gender: 'male', age: 65 }, { name: 'Kim', gender: 'female', age: 58 }];
console.log(averageFemale(array));Run Code Online (Sandbox Code Playgroud)