使用 reduce 方法可以快速实现按属性分类的操作,比使用循环迭代要更高效。以下是一个简单示例代码:
const arr = [
{ id: 1, name: 'A' },
{ id: 2, name: 'B' },
{ id: 3, name: 'A' },
{ id: 4, name: 'C' },
{ id: 5, name: 'B' },
];
const result = arr.reduce((acc, item) => {
const key = item.name;
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(item);
return acc;
}, {});
console.log(result);
/*
{
A: [{ id: 1, name: 'A' }, { id: 3, name: 'A' }],
B: [{ id: 2, name: 'B' }, { id: 5, name: 'B' }],
C: [{ id: 4, name: 'C' }]
}
*/
console.log(Object.entries(result));
在这个示例中,使用 reduce 方法对数组进行迭代,将每个元素的 name 属性作为 key,将对应的元素添加到以 key 命名的数组中,并且最终返回一个以属性值作为键的对象。
最后通过Object.entries()方法将result转换成二维数组并输出。