数组去重(数字&对象属性)

编写一个函数,接受一个包含重复元素的数组,返回一个去重后的新数组。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>RemoveDuplicates</title>
</head>

<body>
    <script>
        /**
         * 数组去重:编写一个函数,接受一个包含重复元素的数组,返回一个去重后的新数组。
         * const numbers = [1, 2, 2, 3, 4, 4, 5];
         * const uniqueNumbers = removeDuplicates(numbers);
         * 期望 uniqueNumbers 为 [1, 2, 3, 4, 5]
         */
        // 数字去重-方式一
        function removeDuplicates1(array) {
            return Array.from(new Set(array))
        }

        const numbers1 = [1, 2, 2, 3, 4, 4, 5];
        const uniqueNumbers1 = removeDuplicates1(numbers1);
        console.log(uniqueNumbers1); // [1, 2, 3, 4, 5]

        // 数字去重-方式二
        function removeDuplicates2(array) {
            let result = []
            for (const item of array) {
                result.includes(item) || result.push(item)
            }
            return result;
        }

        const numbers2 = [1, 2, 2, 3, 4, 4, 5];
        const uniqueNumbers2 = removeDuplicates2(numbers2);
        console.log(uniqueNumbers2); // [1, 2, 3, 4, 5]



        // 数组对象关键字去重
        function removeDuplicates3(array, keyword) {
            let result = []
            for (const item of array) {
                keyword ? result.some(ite => ite[keyword] == item[keyword]) || result.push(item) : result.push(item)
            }
            return result;
        }

        const objs = [{
            id: 1,
            name: "小明",
            age: 12,
            sex: "男"
        }, {
            id: 2,
            name: "小红",
            age: 15,
            sex: "女"
        }, {
            id: 3,
            name: "小亮",
            age: 12,
            sex: "男"
        }, {
            id: 4,
            name: "小明",
            age: 17,
            sex: "男"
        }];
        const uniqueObjs = removeDuplicates3(objs, 'name');
        console.log(uniqueObjs); 
        /*
            {id: 1, name: '小明', age: 12, sex: '男'}
            {id: 2, name: '小红', age: 15, sex: '女'}
            {id: 3, name: '小亮', age: 12, sex: '男'}
        */



        // 数组对象关键字符合去重
        function removeDuplicates(array, keywordArr = []) {
            let result = []
            for (const item of array) {
                if (keywordArr.length == 0) {
                    result.push(item)
                } else if (keywordArr.length == 1) {
                    result.some(ite => ite[keyword] == item[keyword]) || result.push(item)
                }else{
                    keywordArr.every(i => {
                        return result.some(ite => ite[i] == item[i])
                    }) || result.push(item)
                }
            }
            return result;
        }

        const objss = [{
            id: 1,
            name: "小明",
            age: 12,
            sex: "男"
        }, {
            id: 2,
            name: "小红",
            age: 15,
            sex: "女"
        }, {
            id: 3,
            name: "小亮",
            age: 12,
            sex: "男"
        }, {
            id: 4,
            name: "小明",
            age: 17,
            sex: "男"
        }];
        const uniqueObjss = removeDuplicates(objs, ['sex',"age"]);
        console.log(uniqueObjss); 
        /**
            {id: 1, name: '小明', age: 12, sex: '男'}
            {id: 2, name: '小红', age: 15, sex: '女'}
            {id: 4, name: '小明', age: 17, sex: '男'}
        */
    </script>
</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值