Js快速过滤10万条手机重复号码

tel

曾经项目中有一项功能就是允许用户从Excel中导入手机号码,然后前端js必须过滤掉其中重复的手机号……,可能当初开发的人没想到会恶心的导入10万条数据,所以没怎么优化,结果卡死了……

 后来不知道怎么就我接手了,就google一把,用了月影的一段代码,效果还不错,好像IE6中用了3秒……,这对我们来说已经很好了,因为在这之前要用10几分钟,哈哈……夸张吧。

今天偶然看到怿飞的一篇文章,也是介绍删除数组中的重复项,按照其思路测试了一把,强大……IE6只要400豪秒,其他浏览器就不用说了。

            var oldTels = []; //测试手机
            //构造10万条测试号码
            for (var i = 0; i < 100000; i++) {
                oldTels[i] = (13000000000 + Math.floor(Math.random() * 1000000000)).toString();
            }
            var date1 = new Date();
            var tel;
            var repeatTels = {}; //重复手机
            var newTels = []; //过滤后手机
            var len = oldTels.length;
            for (var j = 0; j < len; j++) {
                tel = oldTels[j];
                if (repeatTels[tel] !== 1) {
                    repeatTels[tel] = 1;
                    newTels.push(tel);
                }
            }
            alert(new Date()-date1);//400

            //今天看到同事用了另外一种方法,效率甚至比上面的还快一点点,好吧记下,备用

            var date2 = new Date();

            var newTels2 = oldTels.sort();

            var new Tels3 = [];

            for(var j = 0; j < len; j++){

                var tel = newTels2[j];

                if(tel !== newTels2[j-1]) newTels3.push(tel);

            }

            alert(new Date() - Date2);

posted @ 2011-08-22 10:47  自由小菜园  阅读(1578)  评论(4)    收藏  举报