mackxu
子曰:学而时习之,不亦说乎?
posts - 115,comments - 39,views - 13万

数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复。主要是理清思路和考虑执行性能。

for循环删除后面重复的

var uniqueFor = function(arr) {
    for (var i = 0; i < arr.length - 1; i++) {
        var item = arr[i];
        for(var j = i+1; j < arr.length; j++ ) {
            item === arr[j] && (arr.splice(j, 1), j--);
        }
    };
    return arr;
};

判断对象属性

var uniqueObject = function(arr) {
    var v, r = [], o = {};
    for(var i = 0; (v = arr[i]) !== undefined; i++) {
        !o[v] && (r.push(v), o[v] = true);
    }
    return r;
};

数组过滤重复项filter

var uniqueFilter = function(arr) {
    return arr.filter(function(elem, pos, self) {
        // 如果没有重复项,返回true
        return self.indexOf(elem, pos + 1) === -1;
    });
};

比较执行效率


图1 chrome浏览器


图2 firefox浏览器


图3 IE10浏览器

参考文献
http://jsperf.com/quchong/5
http://www.nowamagic.net/javascript/js_RemoveRepeatElement.php
http://blog.segmentfault.com/fishenal/1190000000418858

posted on   mackxu  阅读(1744)  评论(7)    收藏  举报
编辑推荐:
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
· 记一次 .NET某固高运动卡测试 卡慢分析
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
阅读排行:
· 7 个最近很火的开源项目「GitHub 热点速览」
· DeepSeekV3:写代码很强了
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
· Visual Studio 2022 v17.13新版发布:强化稳定性和安全,助力 .NET 开发提
· 让 AI 对接 MySQL 数据库实现快速问答对话

点击右上角即可分享
微信分享提示