以下是一个示例代码,演示如何按照不同的键将对象数组分组:
function groupBy(arr, key) {
return arr.reduce((acc, obj) => {
const groupKey = obj[key];
if (!acc[groupKey]) {
acc[groupKey] = [];
}
acc[groupKey].push(obj);
return acc;
}, {});
}
// 示例数据
const people = [
{ name: 'John', age: 20, gender: 'male' },
{ name: 'Jane', age: 25, gender: 'female' },
{ name: 'Tom', age: 20, gender: 'male' },
{ name: 'Lisa', age: 25, gender: 'female' },
];
// 按照年龄分组
const groupedByAge = groupBy(people, 'age');
console.log(groupedByAge);
// 按照性别分组
const groupedByGender = groupBy(people, 'gender');
console.log(groupedByGender);
运行以上代码,将会输出以下结果:
{
20: [
{ name: 'John', age: 20, gender: 'male' },
{ name: 'Tom', age: 20, gender: 'male' }
],
25: [
{ name: 'Jane', age: 25, gender: 'female' },
{ name: 'Lisa', age: 25, gender: 'female' }
]
}
{
male: [
{ name: 'John', age: 20, gender: 'male' },
{ name: 'Tom', age: 20, gender: 'male' }
],
female: [
{ name: 'Jane', age: 25, gender: 'female' },
{ name: 'Lisa', age: 25, gender: 'female' }
]
}
以上代码使用了reduce
方法来迭代数组,并根据指定的键来将对象分组。首先,我们初始化一个空对象acc
作为累加器。然后,对于数组中的每个对象,我们根据指定的键获取分组的键groupKey
。如果acc
中不存在该分组键,则创建一个空数组,并将该数组作为值与分组键关联起来。接着,我们将当前对象添加到对应的分组数组中。最后,返回累加器acc
作为结果。
上一篇:按照不同标准对向量进行排序和搜索
下一篇:按照不同的间距拆分多行字符串