查找对象数组的平均值

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)


Moh*_*man 5

你也可以:

  • 使用过滤输入数组.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)


Nin*_*olz 1

您需要检查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)