网站在线制作软件企业文化标语
前言
数组有很多方法都可以实现去重。本章分享比较常用的。
准备工作
准备一组数组对象
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] = truepre.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去重得先转换类型