写一个方法去掉一个数组的重复元素!谢谢。

解决方案 »

  1.   

    Array.prototype.unique = function() {
    var ret = [], done = {},o = this;
    for ( var i=0,length=o.length; i<length; i++) {
    if (!done[o[i]]){
    done[o[i]] = true;
    ret.push( o[i] );
    }
    }
    return ret;
    }
    [MyArray].unique
      

  2.   


    function unique(arr) {
    var o = {}, re = [];
    for(var i = 0, len = arr.length; i < len; i++) {
    if(o[arr[i]] === undefined) o[arr[i]] = arr[i];
    }
    for(var p in o) re[re.length] = p;

    return re;
    }
    alert(unique([1,2,3,1,3,3,2]))
      

  3.   


    function unique(arr) {
    var str = arr.join(','), re = [];
    str.replace(/([^,]*)/g, function($0, $1, i) {
    if(str.indexOf($1) == i) re[re.length] = $1;
    });
    return re;
    }
    alert(unique([1,2,3,1,3,3,2,4,4]))
      

  4.   


    function unique(arr) {
    var str = arr.join(','), re = [];
    str.replace(/([^,]+)/g, function($0, $1, i) {
    if(str.indexOf($1) == i) re[re.length] = $1;
    });
    return re;
    }
    alert(unique([1,2,3,1,3,3,2,4,4]));
      

  5.   


    <script language="javascript" type="text/javascript">
    Array.prototype.strip=function()
    {
     if(this.length<2) return [this[0]]||[];
     var arr=[];
     for(var i=0;i<this.length;i++)
     {
      arr.push(this.splice(i--,1));
      for(var j=0;j<this.length;j++)
      {
       if(this[j]==arr[arr.length-1])
       {
        this.splice(j--,1);
       }
      }
     }
     return arr;
    }
    var arr=["abc",85,"abc",85,8,8,1,2,5,4,7,8];
    alert(arr.strip());
    </script>
    哈哈,我也抄的
      

  6.   


    if(this.length<2)return [this[0]]||[]; 这样可以?
      

  7.   

    var arr = ["a","b","c","a","d","c"];
    for (var i=arr.length-1; i>=0; i--)//从最后一个节点开始取
    {
    var targetNode = arr[i];//取当前节点
    for (var j=0; j<i; j++)//与之前的每个节点比较
    {
    if(targetNode == arr[j]){//如果当前节点内容在之前的节点中已存在
    arr.splice(i,1);//从数组中删除当前节点
    //alert(arr);
    break;//结束当前节点比较的循环
    }
    }
    }
    alert(arr);