阅读:33回复:0
数组对象[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 }, []) 使用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 |
|