面试:数组去重方法简单总结~

来源:互联网 发布:python教学视频 编辑:程序博客网 时间:2024/05/01 16:11
双重循环
<script>    var arr = [1,5,3,1,9,8,5,4,2,3]; // 需要去重的数组    var list = []; // 用来存结果数组    for(var i=0;i<arr.length;i++){        var num = arr[i];        if(list.indexOf(num)<0){            list.push(num);        }    }</script>

但是indexOf其实也是循环,这样无形中浪费时间和金钱。这个数组还小,如果arr.length=60000甚至更高的时候简直可怕,循环次数是两个数组长度的乘积。所以我想到了hash去重法。

hash去重
function dropRepeat(){    var arr = [1,5,3,1,9,8,5,4,2,3];    var hash = [];    for(var i=0;i<arr.length;i++){       console.log(!hash[arr[i]]);       if(!hash[arr[i]]){           hash[arr[i]] = true;       }    }    // 仅获取 `hash` 中的 `keys`    var i=0;    var keys=[];    for(keys[i++] in hash);    return keys;    console.dir(keys);}

这次循环次数只有不到长度*2次,还是有优化的。

正则去重
function unique3(arr){   var reg=/(^|,)([^,]+)(,\2)*/g;   return String(arr.sort())          .replace(reg,"$1$2")          .split(",");   }
0 0
原创粉丝点击