要求:
依据对象中的某个属性对对象进行分类:
var people = [
{ name: 'Alice', age: 21 },
{ name: 'Max', age: 20 },
{ name: 'Jane', age: 20 }
];
function groupBy(objectArray, property) {
return objectArray.reduce(function (acc, obj) {
// 第一次key为21
var key = obj[property];
// 若不含有21,则新建空数组,
// 若含有,则说明数组已经创建了,否则就push到里面
if (!acc[key]) {
acc[key] = [];
}
// 直接push就行
// acc是个对象,它的属性名是每个元素中age写值,属性值是数组
acc[key].push(obj);
return acc;
}, {});
}
// 依据age对people这个对象进行分类:
var groupedPeople = groupBy(people, 'age');
console.log(groupedPeople);
注:在平时的开发中,要多多使用数组的reduce方法。