数组去重的几种方法

219 阅读1分钟

今天给大家带来的数组中去重的几种方法,以后在清洗数据的时候就可以使用啦

        var arr = [2,4,5,7,1,8,30,2,10,1,2];
        // 数组去重方法 1
        function uniqueArr(arr){
            return Array.from(new Set(arr))
        };
        // 数组去重 2
        function uniqueArr2(arr){
            return [...new Set(arr)]
        };
        // 数组去重 3
        function uniqueArr3(arr){
            var newArr = [];
            arr.forEach(item =>{
                if (newArr.indexOf(item) == -1) {
                    newArr.push(item)
                }
            })
            return newArr;
        }
        function uniqueArr4(arr){
            var newArr = [];
            newArr = arr.filter((item,index) =>{
                return arr.indexOf(item) ===index;
                console.log(indexOf(item),index);
            });
            return newArr
        };
        function uniqueArr5(arr){
            return arr.reduce((pre,item) =>{
                return pre.includes(item) ? pre : [...pre,item]
            },[]);
            
        };
        function uniqueArr6(arr){
            let obj ={};
            arr.forEach((item,index) =>{
                    obj[arr[index]] = '';
                    
            });
            obj = Object.keys(obj).map(item => ~~item)
            return obj
        }
        // 有Bug存在,待完善
        function uniqueArr7(arr){
            let newArr = [];
            for (let i = 0; i < arr.length; i++) {
                for (let j = i+1; j < arr.length; j++) {
                    if (arr[i] === arr[j]) {
                        i++;
                    }
                }
                newArr.push(arr[i])
            }
            return newArr
        };
        function uniqueArr8(arr){
            let newArr = [];
            let temp = arr.sort();
            for (let i = 0; i < temp.length; i++) {
                if (temp[i] !== temp[i+1]) {
                    newArr.push(arr[i])
                }
            }
            return newArr
        }
        console.log(uniqueArr(arr));
        console.log(uniqueArr2(arr));
        console.log(uniqueArr3(arr));
        console.log(uniqueArr4(arr));
        console.log(uniqueArr5(arr));
        console.log("数组去重6");
        console.log(uniqueArr6(arr));
        console.log('数组去重7');
        console.log(uniqueArr7(arr));
        console.log('数组去重8');
        console.log(uniqueArr8(arr));
        一。数组中出现item Object完全相同的同属性key-value的对象处理
        function uniqueArr(data){
            return [...new Set(data.map(item => JSON.stringify(item)))].map(item => JSON.parse(item))
        }
        二。数组中的item Object中出现部分key值相同去重方法
        res.data.rows = [{accountId:'3424233423423',appName:'飞行大战',appPackageList:[{ossId:'https://www.baiodu.com/dsds/img.png',appPackagePath:'com.app.uni'}],appDetail:'dwdw'},{accountId:'3424233423424',appName:'飞行 大战',appPackageList:[{ossId:'https://www.aliyun.com/djsds/erick.png',appPackagePath:'com.app.uni'}],appDetail:'asdw'}];
这时候如何处理呢
        function uniqueArr(data){
            let map = new Map();
            const list = data.filter(item => !map.has(item.appPackagePath) && map.set(item.appPackagePath, 1));
            return list;
        }
        三。数组中的item.key中出现个别属性值为null时的去重;
        第一个参数,传入需要去重的数组,第二个参数,传入需要过滤的条件
        let filterList = (userList, case) => {
          return userList.filter(item => {
            return item.enableStatus != "0" //过滤条件
          }).map(item => {
            item = Object.assign({}, item)
            if (item.list) {
              item.list = filterList(item.list, "0")
            }
            return item
          })
        };