先简单说明一下groupBy做了什么
groupBy() 将一个无序的对象数组根据数组中的某一项数据进行整理
// 例如这样的一个数组
const disorderArr = [
{name: 'xiaohua', gender: 'man'},
{name: 'xiaoming', gender: 'man'},
{name: 'dazhuang', gender: 'man'},
{name: 'xiaohong', gander: 'women'}
{name: 'hanmeimei', gander: 'women'}
{name: 'xiaxue', gander: 'women'}
]
// 当有一个需求,我们需要将 学生们按照性别分配。我们就需要去整理这个数组
function groupBy(disorderArr) {
const orderListByGender = Array.from(
new Set(disorderArr.map(obj => obj.gender))
)
const genderList = orderListByGender.map(items => {
const groupItem = [items, []]
disorderArr.forEach(val => {
if(val.gender === groupItem[0]) {
groupItem[1].push(val)
}
})
return groupItem
})
return genderList
}
// 经过整理以后得到的就是一个二维数组
[ ['man', [ {name: 'xiaohua', gender: 'man'}, {name: 'xiaoming', gender: 'man'}, {name: 'dazhuang', gender: 'man'}, ]],
['women', [ {name: 'xiaohong', gander: 'women'} {name: 'hanmeimei', gander: 'women'} {name: 'xiaxue', gander: 'women'} ]],
]
// 有需要的同学还可以 通过 Object.fromEntries 将这个键值对数组转化为对象