js 简易对象数组的去重

const points = [
    { name: 'zs', age: 20 },
    { name: 'zs', age: 30 },
    { name: 'ls', age: 20 },
    { name: 'zs', age: 20 },
    { name: 'ls', age: 30 },
    { name: 'ls', age: 20 },
];

function filter(array) {
    const newArr = [];
    function unique(arr) {
        newArr.push(arr[0]);
        const keys = Object.keys(arr[0]);
        const filters = arr.slice(1).filter(obj => keys.some(key => (obj[key] !== arr[0][key] || Object.keys(obj).length !== keys.length)));
        if (filters.length === 0) return;
        unique(filters);
    }
    unique(array);
    return newArr;
}

const arr = filter(points);
console.log(arr);
// [
//   { name: 'zs', age: 20 },
//   { name: 'zs', age: 30 },
//   { name: 'ls', age: 20 },
//   { name: 'ls', age: 30 }
// ]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容