在编程中,对对象数组按照某个相同的键进行分组是一种常见的需求。这通常可以通过使用高阶函数如 reduce
来实现。以下是一个使用 JavaScript 实现的示例:
const groupBy = (array, key) => {
return array.reduce((acc, obj) => {
const keyValue = obj[key];
if (!acc[keyValue]) {
acc[keyValue] = [];
}
acc[keyValue].push(obj);
return acc;
}, {});
};
// 示例对象数组
const people = [
{ name: 'Alice', age: 20 },
{ name: 'Max', age: 20 },
{ name: 'Jane', age: 21 }
];
// 按年龄分组
const groupedPeople = groupBy(people, 'age');
console.log(groupedPeople);
输出结果将会是一个对象,其中每个键对应一个年龄,每个值是一个包含具有该年龄的所有人的数组:
{
"20": [
{ "name": "Alice", "age": 20 },
{ "name": "Max", "age": 20 }
],
"21": [
{ "name": "Jane", "age": 21 }
]
}
groupBy
函数中添加检查来解决这个问题。reduce
方法可能会很慢。可以考虑使用更高效的数据结构或算法,或者在服务器端进行分组。通过上述方法和注意事项,你可以有效地对对象数组进行分组,并处理可能出现的各种问题。
领取专属 10元无门槛券
手把手带您无忧上云