JS中如何删除数组中相同的元素啊!

解决方案 »

  1.   


    var a = [1,2,3,1,1,3,5,3,6,2];
    var b=[];
    for(var i=0;i<a.length-1;i++){
        var bFound = false;
        for(var j=i-1;j>=0;j--){
            if(a[i]==a[j]) {bFound=true;break;}
        }
        if(!bFound) b[b.length]=a[i]
    }
    alert(b)
      

  2.   

    利用对象,避免2重循环
    比如:<script>
    var arr = [1,2,3,4,5,6,7,8,9,2,4,6,7,3,4];
    var obj = new Object();
    for(var i=0;i<arr.length;i++){
    if(!eval("obj.attr"+arr[i])){
    eval("obj.attr"+arr[i]+"="+arr[i]);
    }
    }
    var arr1 = [];
    for(var attr in obj){
    arr1[arr1.length] = obj[attr];
    }
    alert(arr1);
    </script>不过效率怎么样还真没测过,应该还可以的^_^
      

  3.   


    用HASH
    <script type="text/javascript">
    <!--
    var arr = ['a','b','c','a','b','d','b'],hash = {};
    for(var i = 0; i < arr.length; i++)  hash[arr[i]] == undefined && (hash[arr[i]] = arr[i]);
    for(var o in hash) document.write(o)
    //-->
    </script>
      

  4.   


    // 如果单个字符.. 效率扩展都很差...
    alert(['a','b','c','a','b','d','b'].sort().join("").replace(/(\w)\1*/g,"$1,"));
      

  5.   

    xxx.join('‖').match(/(\b[^‖]+\b)(?!.*‖\1\b)/ig);