• 数组去重


    目前看到最简洁的方式  使用filter去重(但效率不是最高)

    myArray = [22,22,33,44,44,55,55];
    
    myArray.filter(function(element, index, arr){return arr.indexOf(element)== index;})
    
    //[22, 33, 44, 55]

    使用filter  只有当前元素在数组中第一次出现才push到结果数组

    传统的方式

    //为Array类型增加函数  使其可以去重
    //利用obj的hash特性
    Array.prototype.eraseDuplicate = function() { var after = {}; var re = []; for (var i = 0; i < this.length; i++) { if (!after[this[i]]) { after[this[i]] = 1; re.push(this[i]); } } return re; }; console.log([1, 2, 3, 3, 4, 55, 6, 6].eraseDuplicate()); //写一个可以对二位数组去重的 找出出现过的数字(不重复) var arr = [2, 3, [4, 6, [3, 8]], 12, 10]; Array.prototype.getUnq = function() { var rs = []; var arr = this; (function getUnique(arr) { for (var i = 0, len = arr.length; i < len; i++) { if (arr[i].constructor == Array) { arguments.callee(arr[i]); } else { if (rs.indexOf(arr[i]) == -1) { rs.push(arr[i]); } } } })(arr); return rs; } rs = arr.getUnq(); console.log(rs); //PS 递归函数应始终使用arguments.callee

    还有一种方式 如果只是去除重复元素 对数据顺序没有要求的话 可以先对数组排序 然后挨个比较 如果当前和前一个相同 就去掉当前

    参考刘春龙的博客http://php.js.cn/blog/array-unique-in-javascript/   博客中的方案3 和 我这里面提到的第一个是同一种思想

    这种貌似是效率最高的

    Array.prototype.unique4 = function()
    {
        this.sort();
        var re=[this[0]];
        for(var i = 1; i < this.length; i++)
        {
            if( this[i] !== re[re.length-1])
            {
                re.push(this[i]);
            }
        }
        return re;
    }
  • 相关阅读:
    spring学习10-AOP
    spring学习9-代理模式
    spring学习6-bean的自动装配
    PyQT5使用心得
    Python 时间戳和日期相互转换
    requests模块的入门使用
    Celery异步任务
    MySQL和python交互
    MySQL高级
    MySQL中select的使用
  • 原文地址:https://www.cnblogs.com/cart55free99/p/4188473.html
Copyright © 2020-2023  润新知