let arr = [
{name: '张三', age: 18},
{name: '李四', age: 20},
{name: '王五', age: 18},
{name: '赵六', age: 20},
{name: '孙七', age: 21},
];
let obj = {};
arr.forEach(item => {
if (!obj[item.age]) {
obj[item.age] = [];
}
obj[item.age].push(item);
});
console.log(obj);
// {
// 18: [{name: '张三', age: 18}, {name: '王五', age: 18}],
// 20: [{name: '李四', age: 20}, {name: '赵六', age: 20}],
// 21: [{name: '孙七', age: 21}],
// }
const people = [
{name: '张三', age: 18},
{name: '李四', age: 20},
{name: '王五', age: 18},
{name: '赵六', age: 20},
{name: '孙七', age: 21},
];
const groups = people.reduce((groups, person) => {
const key = person.age;
if (!groups[key]) {
groups[key] = [];
}
groups[key].push(person);
return groups;
}, {});
console.log(groups);
// {
// 18: [{name: '张三', age: 18}, {name: '王五', age: 18}],
// 20: [{name: '李四', age: 20}, {name: '赵六', age: 20}],
// 21: [{name: '孙七', age: 21}],
// }
- 使用map实现
-
let arr = [
{name: '张三', age: 18},
{name: '李四', age: 20},
{name: '王五', age: 18},
{name: '赵六', age: 20},
{name: '孙七', age: 21},
];
function groupBy(arr, key) {
const grouped = {};
arr.map(item => {
const keyValue = item[key];
grouped[keyValue] = grouped[keyValue] || [];
grouped[keyValue].push(item);
});
return grouped;
}
const grouped = groupBy(arr, 'age');
console.log(grouped);
// {
// 18: [{name: '张三', age: 18}, {name: '王五', age: 18}],
// 20: [{name: '李四', age: 20}, {name: '赵六', age: 20}],
// 21: [{name: '孙七', age: 21}],
// }