gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1442
阅读:35回复:0

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

楼主#
更多 发布于:2025-06-11 15:44


前言

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


准备工作

准备一组数组对象

 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
        }, [])





使用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去重得先转换类型



https://blog.csdn.net/yunjin0101/article/details/147196960?ops_request_misc=&request_id=&biz_id=102&utm_term=js%20%E6%95%B0%E7%BB%84%E5%AF%B9%E8%B1%A1%E5%8E%BB%E9%87%8D&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-4-147196960.nonecase&spm=1018.2226.3001.4187
游客


返回顶部