当前位置: 首页 > news >正文

数组对象[object],五种如何去重方法 js

前言

数组有很多方法都可以实现去重。本章分享比较常用的。

准备工作

准备一组数组对象

 let arr = [
            { id: "1", name: "张晓", age: 14 },
            { id: "2", name: "张晓", age: 14 },
            { id: "3", name: "张晓", age: 14 },
            { id: "1", name: "张晓", age: 14 },//重复数据
            { id: "3", name: "张晓", age: 14 },//重复数据
        ]

使用reduce去重

方法1:

 let obj = {}
        let arr1 = arr.reduce((pre, cur) => {
            if (obj[cur.id]) {
                return pre
            } else {
                obj[cur.id] = true
                pre.push(cur)
                return pre
            }
        }, [])

方法2:

let arr2 = arr.reduce((pre, cur) => {
            if(!pre.some((item)=>item.id===cur.id)){
                pre.push(cur)
            }
            return pre
        }, [])

提示:arry.some方法是指只有一条数据满足判断条件,则返回true

方法3:

     let arr3 = arr.reduce((pre, cur) => {
            if(pre.every((item)=>item.id!==cur.id)){
                pre.push(cur)
            }
            return pre
        }, [])

提示:arry.every方法是指全部条数据满足判断条件,则返回true

使用filter去重

 let arr4 = arr.filter((item, index, self) => {
            const slicelist =  self.slice(index+1, self.length)
            const find = slicelist.find((itm) => itm.id === item.id)
            if (!find) {
                return item
            }
        })

提示:self是指本身的数组,self.slice方法是裁剪数据

使用set去重

 const uniqueArry = ()=>{
         const stringArry=  arr.map((item)=>JSON.stringify(item))
        const uniqueList = new Array(...(new Set(stringArry)))
        return uniqueList.map((item)=>JSON.parse(item))
        }

提示:new Set()是去重的关键,但是只支持去重基本类型(null,undefined,string,boolean,number).所以要使用set去重得先转换类型

相关文章:

  • 【从零实现高并发内存池】- 项目介绍、原理 及 内存池详解
  • 小八股-CDN
  • 100M/1000M 以太网静电浪涌防护方案
  • 机械革命 无界15X 自带的 有线网卡 YT6801 debian12下 的驱动方法
  • sd协议的大致通信过程
  • 图论之并查集——含例题
  • Agno 开源程序是一个轻量级库,用于构建具有内存、知识、工具和原生多模态支持的推理代理。使用 Agno 构建推理代理、多模态代理、代理团队和代理工作流。
  • 【编写Node接口;接口动态获取VUE文件并异步加载, 并渲染impoort插件使用】
  • tcp特点+TCP的状态转换图+time_wait详解
  • 负载均衡nginx中的FIN包传递
  • QDataStream 解析网络,或串口传来的数据
  • 计算机组成原理-存储器
  • c/c++ 使用libgeotiff读取全球高程数据ETOPO
  • Prompt工程提示词(1-6章)
  • Python中NumPy的统计运算
  • 控制单元设计(Control Unit, CU)
  • 【C++初学】课后作业汇总复习(七) 指针-深浅copy
  • 批量将文件名称、文件路径、文件扩展名提取到 Excel 清单
  • QMT美林时钟策略(15年11倍,年化13.5%策略)
  • 【C++算法】57.哈希表_判断是否互为字符重排
  • 设计必备网站/现在外贸推广做哪个平台
  • 泉州做网站价格/石家庄头条今日头条新闻
  • 湖北交投建设集团网站/免费自助建站平台
  • 网站网页设计0基础学/让顾客心动的句子