数组的内容,可能不是我们所需要的结构,想要对其进行分类
const list = [
{ category: 'fruits', name: 'apple' },
{ category: 'animals', name: 'dog' },
{ category: 'fruits', name: 'banana' },
{ category: 'animals', name: 'cat' }
];
// 分组函数
const groupBy = (array, key) => {
return array.reduce((result, currentItem) => {
// 使用 key 函数提取分组键,如果是字符串,则直接用作键名
// 如果 key 是一个函数,则调用该函数获取键名
const groupKey = typeof key === 'function' ? key(currentItem) : currentItem[key];
// 初始化分组数组(如果尚未创建)
if (!result[groupKey]) {
result[groupKey] = [];
}
// 将当前项添加到对应分组
result[groupKey].push(currentItem);
return result;
}, {});
};
// 调用 结果如下图展示
groupBy(list, 'category')