假设我们有个员工列表,其中每个员工都一个具有2个属性的对象:name和age
const people = [
{name:'Alice',age:21},
{name:'Max',age:21},
{name:'Jane',age:21},
];
//现在,我们需要对其进行age分类,最终输出结果
const groupedPeople = {
20:[
{name:'Max',age:20},
{name:'Jane',age:20}
],
21:[
{name:'Alice',age:21}
]
}
//通常的方法是使用array.reduce(), reduce()方法对数组中的每个元素按序执行一个由您提供的reducer函数,每一次运行reducer会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值.我们实现一个groupBy函数
function groupBy(onjectArray,property){
return objectArray.reduce(function(acc,obj){
let key = obj[property]
if(!acc[key]){
acc[key] = []
}
acc[key].push(obj)
return acc
},{})
}
const groupedPeople = groupBy(people,'age')