淘先锋技术网

首页 1 2 3 4 5 6 7
JavaScript分组是一个非常常见的操作,可以用于对数据进行分类、过滤、排序等。下面我们就来详细讲解JavaScript分组操作。 ```html
let list = [
{ name: '张三', age: 20, gender: 'male' },
{ name: '李四', age: 22, gender: 'male' },
{ name: '王五', age: 18, gender: 'female' },
{ name: '赵六', age: 19, gender: 'female' },
{ name: '钱七', age: 21, gender: 'male' },
];
``` 我们假设我们有一个人员列表,如上所示。我们现在要根据年龄段对列表进行分组,并计算各组人数和平均年龄。 ## 根据年龄段分组 我们可以使用reduce函数,对年龄进行分组。 ```html
let groupByAge = list.reduce((result, item) =>{
const ageGroup = Math.floor(item.age / 10) * 10;
result[ageGroup] = result[ageGroup] || [];
result[ageGroup].push(item);
return result;
}, {});
console.log(groupByAge);
``` 上述代码中,我们首先使用Math.floor函数将每个人的年龄向下取整,然后将同一个年龄组的人员放在一起。最后返回一个以年龄段为key的对象。 输出结果如下: ```html
{
'20': [
{ name: '张三', age: 20, gender: 'male' },
{ name: '李四', age: 22, gender: 'male' },
{ name: '赵六', age: 19, gender: 'female' },
],
'10': [ 
{ name: '王五', age: 18, gender: 'female' },
],
'21': [
{ name: '钱七', age: 21, gender: 'male' },
],
}
``` 可以看到,我们已经将人员按照年龄段分好了组,接下来我们需要统计每个组的人数和平均年龄。 ## 统计组内人数和平均年龄 为了计算组内人数和平均年龄,我们需要循环遍历每个组,统计人数和年龄总和。 ```html
let groupSum = {};
for (let ageGroup in groupByAge) {
let group = groupByAge[ageGroup];
groupSum[ageGroup] = {
count: group.length,
avgAge: group.reduce((sum, item) =>sum + item.age, 0) / group.length,
};
}
console.log(groupSum);
``` 上述代码中,我们使用for...in循环遍历每个年龄段,然后对每个年龄段内的人员进行统计。最终输出每个年龄段的人数和平均年龄。 输出结果如下: ```html
{
'20': { count: 3, avgAge: 20.333333333333332 },
'10': { count: 1, avgAge: 18 },
'21': { count: 1, avgAge: 21 },
}
``` 综上所述,JavaScript分组操作是非常实用且常见的操作。无论是对数据进行分类、过滤、排序等,分组都是一个很好的工具。希望本文对您有所帮助。