这个 arrGroup
函数的作用是将数组 arr
中的对象按照 type
属性进行分组,将相同 type
的对象的 name
值合并到同一个数组中。最终输出一个对象,键是 type
的值,值是对应的 name
数组。
let arr = [{
type: 1,
name: '手机'
},
{
type: 2,
name: '空调'
},
{
type: 3,
name: '盆栽'
},
{
type: 1,
name: '翻盖手机'
},
{
type: 3,
name: '植物'
}]
function arrGroup() {
// acc合计值,obj当前遍历item
let outcome = arr.reduce((acc, obj) => {
const { type, name } = obj;
// 初始 acc[type] 肯定不存在,给一个默认空数组
// 再次遍历 acc[type] = acc[type] 不会做修改
acc[type] = acc[type] || [];
// 给数组push数据
acc[type].push(name);
return acc; // 返回最新的acc
}, {}); // acc初始值为空对象 {}
console.log('结果', outcome)
}
arrGroup();
初始化和遍历:
使用 reduce 方法遍历数组 arr,初始累加器 acc 是一个空对象 {}。
处理每个元素:
对于每个对象 obj,解构出 type 和 name。
检查累加器 acc 中是否存在键为 type 的条目:
如果不存在(如首次遇到某个 type),则初始化 acc[type] 为空数组 []。
如果已存在,直接使用已有的数组。
收集 name 值:
将当前对象的 name 添加到 acc[type] 对应的数组中。
返回结果:
遍历完成后,acc 成为一个按 type 分组的对象
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。