js object 去重

 测试:数据

 let arr = [

                { a: 1, b: 2 },

                { b: 3, a: 4 },

                {

                    b: 2, a: 1

                }

            ]

结果

function unique(arr) {

            const newArr = [...arr]

            for (let i = 0; i < newArr.length; i++) {

                for (let j = i + 1; j < newArr.length; j++) {

                    if (this.duibi(newArr[i], newArr[j])) {

                        newArr.splice(j, 1);

                        j--;

                    }

                }

            }

            return newArr;

            // return Array.from(new Set(arr));

        }



        function duibi(val1, val2) {

            if (isObject(val1) && isObject(val2)) {

                if (val1.length != val2.length) {

                    return false;

                }

                let key1 = Object.keys(val1);

                let key2 = Object.keys(val2);



                for (let k1 of key1) {



                    if (!key2.includes(k1)) {

                        return false;

                    }

                    if (!duibi(val1[k1], val2[k1])) {

                        return false;

                    }

                }

                return true;

            } else {

                return val1 == val2

            }

        }

        //是否为集合

        function isObject(obj) {

            return obj !== null && typeof obj === 'object';

        }

js object 去重_第1张图片

你可能感兴趣的:(javascript,前端,开发语言)