soulteary
F2E第2003号成员
入住于2015-02-28
ID
soulteary
Email
soulte***@qq.com
回复列表
回复了 NancyChan 创建的主题 取出js数组中的重复元素

任何时候,如非必要,不要破坏原型,即使是做es5的shim;2L sort combo蛮赞的,不过indexOf没有考虑古董client;4L cache key和判断cache做的有点多了感觉,结合一下或许会好一些。

var a = [3, 'hello', 5, 6, 4, 3, 'hello'];

function duplicate(source) {
    var ret = [], cache = [];
    source.concat().sort().sort(function (a, b) {
        if (a == b) {
            var key = typeof(a) + ":" + a;
            if (!cache[key]) {
                cache[key] = true;
                ret.push(a);
            }
        }
    });
    return ret;
}

// test
console.log(duplicate(a));

如果数据集比较大的话,可以考虑不建立cache,使用快排走index维护重复元素列表。

0 主题
1 回复
0 收藏
0 威望
我的二维码