• 关于数组的去重


    一、简单一维数组的去重:

    简单一维数组的去重方法有很多,这种数组里面的值都是普通的数据类型,并没有对象,因此去重方法有很多,这里总结一下常用的四种方法(网上还有一些其它的方法):
    方法一:双层循环去重

    function uniqueArr(arr) {
        var result = [];
        for (var i = 0; i < arr.length; i++) {
            for (var j = i + 1; j < arr.length; j++) {
                if (arr[i] === arr[j]) {
                    j = ++i;
                }
            }
            result.push(arr[i]);
        }
        return result;
    }
    

    方法二:利用对象的属性不能相同去重

    function uniqueArr(arr) {
        var result = [];
        var obj = {};
        for (var i = 0; i < arr.length; i++) {
            if (!obj[arr[i]]) {
                obj[arr[i]] = 1;
                result.push(arr[i]);
            }
        }
        return result;
    }
    

    方法三:利用下标

    function uniqueArr(arr) {
        var result = [arr[0]];
        for (var i = 1; i < arr.length; i++) {
            if (result.indexOf(arr[i]) == -1) {
                result.push(arr[i]);
            }
        }
        return result;
    }
    

    方法四:ES6去重

    function uniqueArr(arr) {
        return Array.from(new Set(arr));
    }
    

    二、包含对象的二维数组去重:

    假设有这样的一个二维数组,数组里面多个对象的属性至少有一个都一样,那就该如何去除重复的数据呢?这里总结一下两种方法:
    方法一:双重循环去除法

    function uniqueArr(arr, key) {
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            var flag = true;
            for (var j = 0; j < newArr.length; j++) {
                if (arr[i][key] == newArr[j][key]) {
                    flag = false;
                }
            }
            if (flag) newArr.push(arr[i]);
        }
        return newArr;
    }
    

    方法二:利用reduce来实现

    function uniqueArr(arr, key) {
        var hash = {};
        return arr.reduce(function(item, next) {
            hash[next[key]] ? '' : hash[next[key]] = true && item.push(next);
            return item
        }, []);
    }
    

    例子:

    var arr = [{
            id: '001',
            name: 'Jack'
        },
        {
            id: '002',
            name: 'Eric'
        },
        {
            id: '003',
            name: 'Tom'
        },
        {
            id: '003',
            name: 'Lucy'
        },
        {
            id: '002',
            name: 'Lucy'
        },
        {
            id: '004',
            name: 'Jacky'
        },
    ]
    uniqueArr(arr, 'id');
    
  • 相关阅读:
    [最新]制作u盘引导安装ubuntu11.04
    js记录
    下面的代码有什么不妥之处
    Oracle常用命令
    蓝天下,献给你,html5
    无意义的小东西
    sql中,把varchar类型转换为int型,然后进行排序
    身边的人,来来去去
    不一定能写出来的求素数问题
    写在第一百篇博客之际
  • 原文地址:https://www.cnblogs.com/jone-chen/p/9828510.html
Copyright © 2020-2023  润新知