比如:
var arr = [1,2,3,4,5,6,7,8,4,3,2,5,6,23,4,2];
过滤后[1,2,3,4,5,6,7,8,23];

解决方案 »

  1.   

    <script type="text/javascript" >
    function OArray(arr){
        var obj = {};
        var a = [];
        var nums = {};
        for(var i=0;i<arr.length; i++){
            if(typeof arr[i] == "string"){
                if(arr[i] != obj[arr[i]]){
                    a.push(arr[i]);
                    obj[arr[i]] = arr[i];
                }
            }else {
                if(nums[arr[i]] !== arr[i]){
                    nums[arr[i]] = arr[i];
                    a.push(arr[i]);
                }
            }
        }
        return a;
    }
    function AArray(arr){
        var obj = [];
        var a = [];
    ll:
        for(var i=0;i<arr.length;i++){
            for(var j=0;j<obj.length;j++){
                if(arr[i] == obj[j])
                    continue ll;
            }
            obj.push(arr[i]);
        }
        return obj;
    }
    alert(AArray([1,2,3,5,"1",2,6]));
    alert(OArray([1,2,3,5,"1",2,6]));
    </script>
    这个是我以前做的,那个AArray可以过滤纯数字的,那个OArray比他要强些,能区分数字1和字符串"1".
      

  2.   

    有适用条件的做法,就是每个值必须是可以作为数组下标的$arr =  array(1,2,3,4,5,6,7,8,4,3,2,5,6,23,4,2);
    $arr = array_keys(array_flip($arr));
    print_r($arr);
      

  3.   

    晕,看错地方了PHP的,不好意思啊,无视无视,
      

  4.   

    谢谢大家,楼上的不是JavaScript,一楼的很好。
      

  5.   

    Array.prototype.unique = function()
      {
        var a = {};
         for(var i=0; i<this.length; i++)
        {
          if(typeof a[this[i]] == "undefined")
            a[this[i]] = 1;
        }
        this.length = 0;
        for(var i in a)
          this[this.length] = i;
        return this;
      }
    alert([1,2,3,4,5,6,7,8,4,3,2,5,6,23,4,2].unique());