你可以使用reduce()方法来按照给定键将对象分组在数组中。下面是一个示例代码:
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 persons = [
{ name: 'John', age: 20, gender: 'male' },
{ name: 'Jane', age: 25, gender: 'female' },
{ name: 'Mike', age: 30, gender: 'male' },
{ name: 'Emily', age: 22, gender: 'female' },
];
const groupedPersons = groupBy(persons, 'gender');
console.log(groupedPersons);
运行以上代码将输出以下结果:
{
male: [
{ name: 'John', age: 20, gender: 'male' },
{ name: 'Mike', age: 30, gender: 'male' }
],
female: [
{ name: 'Jane', age: 25, gender: 'female' },
{ name: 'Emily', age: 22, gender: 'female' }
]
}
在上述示例中,我们使用reduce()方法来遍历数组。对于每个对象,我们获取给定键的值作为分组键(groupKey)。如果该分组键在累加器(acc)对象中不存在,我们创建一个空数组作为该键的值。然后,我们将当前对象添加到该分组键对应的数组中。最后,我们返回累加器对象,其中包含按照给定键分组的对象数组。