这个 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();

image.png

初始化和遍历:
使用 reduce 方法遍历数组 arr,初始累加器 acc 是一个空对象 {}。

处理每个元素:
对于每个对象 obj,解构出 type 和 name。
检查累加器 acc 中是否存在键为 type 的条目:
如果不存在(如首次遇到某个 type),则初始化 acc[type] 为空数组 []。
如果已存在,直接使用已有的数组。

收集 name 值:
将当前对象的 name 添加到 acc[type] 对应的数组中。

返回结果:
遍历完成后,acc 成为一个按 type 分组的对象


兔子先森
420 声望18 粉丝

致力于新技术的推广与优秀技术的普及。