JavaScript 函数:使用 reduce 将数组分组
您可以使用 JavaScript 中的 reduce 函数来实现这个功能。下面是一个示例实现:
function groupBy(arr) {
return arr.reduce((result, item) => {
const name = item.name;
if (!result[name]) {
result[name] = [];
}
result[name].push(item);
return result;
}, {});
}
const input = [
{ name: 'limin', age: 20 },
{ name: 'zhangsan', age: 21 },
{ name: 'lisi', age: 22 },
{ name: 'zhangsan', age: 23 },
{ name: 'limin', age: 24 },
{ name: 'lisi', age: 25 },
];
const output = groupBy(input);
console.log(output);
运行以上代码,将会得到期望的输出:
{
'limin': [
{ name: 'limin', age: 20 },
{ name: 'limin', age: 24 }
],
'lisi': [
{ name: 'lisi', age: 22 },
{ name: 'lisi', age: 25 }
],
'zhangsan': [
{ name: 'zhangsan', age: 21 },
{ name: 'zhangsan', age: 23 }
]
}
这个函数首先使用 reduce 函数初始化一个空对象作为结果。然后遍历输入数组,对于每个元素,将其 name 属性作为 key,如果结果对象中不存在该 key,则初始化一个空数组。然后将当前元素添加到对应的数组中。最后返回结果对象。
原文地址: https://www.cveoy.top/t/topic/cpeY 著作权归作者所有。请勿转载和采集!