处理数组对象去重

相信很多人都遇到过,想把数组里面重复的对象去掉,我最近遇到了,我是怎么处理的呢?试了三种方法,都可以实现。

以下是我测试用的数据:

let list = [

        {

            "key":"476",

            "label":"琼海加积鸭店",

            "disabled":true

        },

        {

            "key":"477",

            "label":"东方烤乳猪",

            "disabled":true

        },

        {

            "key":"481",

            "label":"肯不了鸡",

            "disabled":true

        },

        {

            "key":"483",

            "label":"火车站-肯德基",

            "disabled":true

        },

        {

            "key":"498",

            "label":"汇茶",

            "disabled":true

        },

        {

            "key":"473",

            "label":"叫个炸鸡旗舰店",

            "disabled":true

        },

        {

            "key":"475",

            "label":"石山东山羊",

            "disabled":true

        },

        {

            "key":"484",

            "label":"海南大厦-KFC",

            "disabled":true

        },

        {

            "key":"474",

            "label":"海南鸡饭店",

            "disabled":true

        },

        {

            "key":"501",

            "label":"炸鸡店(不设置)",

            "disabled":true

        },

        {

            "key":"474",

            "label":"海南鸡饭店",

            "disabled":true

        },

        {

            "key":"501",

            "label":"炸鸡店(不设置)",

            "disabled":true

        }

    ]

 1.es6 

    function arrRemoval(list) {

        if (!Array.isArray(list)) {// 判断是否为数组,不是就不往下执行

             console.log('type error!')

           return

        }

        let hash = {}

            list = list.reduceRight((item, next) => {

                hash[next.key] ? '' : hash[next.key] = true && item.push(next);

                return item

            }, []);

            console.log(list)

        }

    arrRemoval(list) 

2. 双重循环去重

    function arrRemoval(list) {

        if (!Array.isArray(list)) { // 判断是否为数组,不是就不往下执行

             console.log('type error!')

           return

        }

       let listArr = []

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

             let listItem = list[i]

             let flag = true

             for(let j = 0; j < listArr.length; j++) {

                 if(listArr[j].key === listItem.key) {

                 flag = false

                }

            }

            if(flag) {

                 listArr.push(listItem)

             }

         }

         return listArr

     }

     arrRemoval(list)

3.相连比较(先排序)

    function arrRemoval(list) {

        if (!Array.isArray(list)) {// 判断是否为数组,不是就不往下执行

             console.log('type error!')

             return

         }

         list.sort((a, b) => { return parseInt(a.key) - parseInt(b.key)}) // 排序

         let listArr = [list[0]]

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

           if(list[i].key !== list[i-1].key) {// 后一项和前一项比较

                listArr.push(list[i])  

            }

         }

         return listArr

     }

    arrRemoval(list)

猜你喜欢

转载自blog.csdn.net/weixin_39418338/article/details/118216446