• 两种简洁的数组对象去重姿势


    偶然间需要写数组对象去重的处理,这两种都是几行代码搞定

        // 需要去重的data数据
        let person = [
            { id: 0, name: "小明" },
            { id: 0, name: "小明" },
            { id: 0, name: "小明" },
            { id: 0, name: "小明" },
            { id: 1, name: "小张" },
            { id: 2, name: "小李" },
            { id: 3, name: "小孙" },
            { id: 3, name: "小孙" },
            { id: 1, name: "小周" },
            { id: 2, name: "小陈" },
        ];
    

    第一种 可统计重复出现次数

        let arr = [];
        let obj = {};
    
        person.map(item => {
            obj[item.id] ? obj[item.id]++ : obj[item.id] = 1 && arr.push(item);
        })
    

    第二种 不需要统计次数的

        let obj1 = {};
        let data = person.reduce((first, item) => {
            obj1[item.id] ? "" : obj1[item.id] = true && first.push(item);
            return first;
        }, [])
    

    补充一下 Array.reduce 方法的说明

    Array.reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
    Array.reduce() 可以作为一个高阶函数,用于函数的 compose

    语法 array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

    参数解析
    total => 循环数组第一次出现 == arr[0] 循环第二个值开始为 undefined
    currentValue => 数组循环第二次开始 == arr[0+1] 循环第一次的值为空从数组第二个开始直至结束
    currentIndex => 循环下标索引值

    initialValue => 如果传一个数组的话 total循环的第一个值为传入的数组或者传入的值

  • 相关阅读:
    44、通配符匹配
    Consul注册中心
    16.11、跳水板
    209、长度最小的子数组
    分布式CAP定理
    剑指 Offer 09、用两个栈实现队列
    git 2.33+版本升级后sshrsa认证失效问题
    OpenJDK各平台版本下载
    maven阿里云镜像无法下载gexinrpsdkbase
    2.SpringBoot集成MinIo文件服务器
  • 原文地址:https://www.cnblogs.com/zhonglinke/p/12206444.html
Copyright © 2020-2023  润新知