山地勇士

他的刀是冷的,他的手是冷的,他的心是冷的。。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

js数组去除重复元素的小招

Posted on 2013-06-27 17:46  山地勇士  阅读(119)  评论(0)    收藏  举报

先写一个简单的例子:用js将数组[1,1,3,2,7,3,4,9]去重?

通常做法:

var a = [1,1,3,2,7,3,4,9];

function distinctFilter(arr){
    var b = [];
    for(var i=0; i<arr.length; i++){
        var isRepeated = false;
        for(var j=0; j<b.length; j++){
            if(arr[i] === b[j]){
                isRepeated = true;
                break;
            }
        }
        if(isRepeated !== true){
            b.push(arr[i]);
        }
    }
    return b;
}
distinctFilter(a);
                                                        

缺点:嵌套for循环导致代码结构不清晰,而且执行效率不高

解决办法:利用hash表存储记录

function distinctFilter(arr){
    var b = [], hash = {};
    for(var i=0; arr[i] != null; i++){
        if(!hash[arr[i]]){
            b.push(arr[i]);
            hash[arr[i]] = true;
        }
    }
   return b; }

简单了吧,只要一次循环就够了,其实就是充分利用hash表,分别存了数组元素和唯一性标识两个值。