Fork me on github

对象数组去重

 

// 用于判断两个对象是否相等的函数
function isObjectEqual(obj1, obj2) {
    const keys1 = Object.keys(obj1);
    const keys2 = Object.keys(obj2);

    if (keys1.length !== keys2.length) {
        return false;
    }

    return keys1.every(key => {
        return typeof obj1[key] === 'object' ? isObjectEqual(obj1[key], obj2[key]) : obj1[key] === obj2[key];
    });
}

function uniqueArray(arr) {
    const result = []
    for(let i = 0; i < arr.length; i++) {
        const item = arr[i]
        const isExist = result.some((resultItem) => {
            return isObjectEqual(resultItem, item)
        })
        if(!isExist) {
            result.push(item)
        }
    }
    return result
}

const arr = [
    {
        a: 1,
        b: 2
    },
    {
        b: 2,
        a: 1
    },
    {
        a: '1',
        b: 2
    },
    {
        c: 3
    }
];

const deduplicatedArr = uniqueArray(arr);
console.log(deduplicatedArr);

这个问题主要可以拆分成两步

1. 判断两个对象是否相等

2. 去重逻辑

 

posted @ 2023-07-23 06:41  zjy4fun  阅读(4)  评论(0编辑  收藏  举报