IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    「代码片段」JavaScript 数组的 reduce() 方法

    沉冰浮水发表于 2023-12-16 11:13:22
    love 0

    刷贴吧时看到的一个需求示例,让 AI 写了下用的 reduce() 方法,之前只是大概知道有这么个东西,姑且借这个例子加深下印象。

    文档

    Array.prototype.reduce() - JavaScript | MDN

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

    代码案例

    (() => {
        const data = [
            { k: "a", v: 1 },
            { k: "a", v: 1 },
            { k: "a", v: 2 },
            { k: "a", v: 3 },
    
            { k: "b", v: 3 },
            { k: "b", v: 3 },
            { k: "b", v: 2 },
    
            { k: "c", v: 2 },
            { k: "c", v: 1 },
            { k: "c", v: 1 },
        ];
        /* 转换成如下格式
            [
                { k: "a", v: [1, 2, 3] },
                { k: "b", v: [3, 2] },
                { k: "c", v: [2, 1] }
            ];
         */
        const result = data.reduce((acc, cur) => {
            const { k, v } = cur;
            const index = acc.findIndex(item => item.k === k);
            if (index === -1) {
                acc.push({ k, v: [v] });
            } else {
                acc[index].v.push(v);
                // 去重,AI 还是会时不时无视一些明明显式声明的要求。。- -
                acc[index].v = [...new Set(acc[index].v)];
            }
            return acc;
        }, []);
    
        console.log(result);
    })();
    
    

    结束

    虽然有点水,但是好像也没啥好说的。。

    一些其他文章:

    • 「代码片段」JavaScript 队列执行异步任务_电脑网络_沉冰浮水
    • 「备忘」JavaScript 错误提示及解决!_电脑网络_沉冰浮水
    • 「代码片段」当网页元素可见时……_电脑网络_沉冰浮水


沪ICP备19023445号-2号
友情链接