js去除数组对象里面重复的对象
例如根据id去重
方法1:for in的方法
objHeavy(arr) { let arr1 = [];//存id let newArr = [];//存新数组 for(let i in arr) { if(arr1.indexOf(arr[i].id) == -1) { arr1.push(arr[i].id); newArr.push(arr[i]) } } return newArr; }
方法2:原声js的方法
objHeavy(arr) { let newObj = {}; let newArr = []; for(let i =0;i<arr.length; i++) { let item = arr[i] if(!newObj[item.id]) { newObj[item.id] = newArr.push(item) } } return newArr }
方法3:会改变原数组
objHeavy(arr) { for(let i = 0; i<arr.length; i++) { for(let j = i+1; j<arr.length;j++) { if(arr[i].id === arr[j].id) { arr.splice(j,1); j = j-1 } } } return arr }
方法4:reduce方法1
let newArr = []; this.arr.reduce((prev,cur)=> { if(!prev.includes(cur.id)) { prev.push(cur.id) newArr.push(cur) } return prev },[]) console.log(newArr);
方法5:reduce方法2
let obj = {}; let array = this.arr.reduce((item,next)=> { obj[next.id]?'':obj[next.id] = true&& item.push(next) return item },[]) console.log(array);
方法6: new Map()方法
objHeavy(arr) { const res = new Map(); return arr.filter((item)=> { return !res.has(item.id) && res.set(item.id,1); }) }