JS数组去重比较

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

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;
    });
};

比较执行效率

JS数组去重比较图1 chrome浏览器

JS数组去重比较图2 firefox浏览器

JS数组去重比较图3 IE浏览器

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

JS数组去重比较,布布扣,bubuko.com

JS数组去重比较

上一篇:2014年度辛星html教程夏季版第五节


下一篇:js基础知识总结:函数