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);
            })
        }

 

posted @ 2022-08-09 17:35  黑白棋学弟  阅读(900)  评论(0编辑  收藏  举报