数据根据条件分组
<!DOCTYPE html>
<html lang="en">
<body>
<script>
/**
* @description: 数据分组
* @params {list}: 要分组的列表数据
* @params {field}: 根据哪个字段分组
* @return {groups} 返回是一个对象的分组
*/
const groupBy = (list, fn) => {
const groups = {};
list.forEach(item => {
// 获取筛选条件的返回 --> 20
const group = JSON.stringify(fn(item));
// 如果存在则直接赋值,否则赋值为空数组
groups[group] = groups[group] || [];
groups[group].push(item);
});
return groups;
};
const arr = [
{ name: '小明', age: 20 },
{ name: '小明1', age: 28 },
{ name: '小明2', age: 20 },
]
const groupData = groupBy(arr, item => {
return item.age;
});
console.log('groupData', groupData)
// 打印结果
// groupData:{
// "20": [
// { name: '小明', age: 20 },
// { name: '小明2', age: 20 }
// ],
// "28": [
// { name: '小明1', age: 28 }
// ]
// }
</script>
</body>
</html>