元素分组
一、认识
二、实现
实现
function groupBy(array, keyFn) {
return array.reduce((result, item) => {
const key = typeof keyFn === 'function' ? keyFn(item) : item[keyFn];
if (!result[key]) {
result[key] = [];
}
result[key].push(item);
return result;
}, {});
}
测试
// 示例 1:按数字的奇偶性分组
const numbers = [1, 2, 3, 4, 5, 6];
const groupByOddEven = groupBy(numbers, num => (num % 2 === 0 ? 'even' : 'odd'));
console.log('按奇偶性分组:', groupByOddEven);
// 输出结果:{ odd: [ 1, 3, 5 ], even: [ 2, 4, 6 ] }
// 示例 2:按对象属性分组
const persons = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 25 }
];
const groupByAge = groupBy(persons, 'age');
console.log('按年龄分组:', groupByAge);
// 输出结果:{ '25': [ { name: 'Alice', age: 25 }, { name: 'Charlie', age: 25 } ], '30': [ { name: 'Bob', age: 30 } ] }