你可以到网上搜索
javascript remove duplicate elements from array可以发现很多现成的代码

解决方案 »

  1.   

        var arr = [11, 10, 0, 23, 16, 1, 23, 4, 20, 18, 1, 5, 11, 13, 7, 8, 20, 9, 13, 8, 23, 16, 23, 21];
        var i, l = arr.length,str = "|"+arr.join("|")+"|",temp = [],t_arr = [], r, b,a = 0,t;
        for(i = 25;--i;){
            str.indexOf("|"+i+"|")==-1 && temp.push(i);//得到数组之处的24内的数组成临时数组temp
        }
        var m = temp.length;
        for(i = m ;i--;){
            r = parseInt(Math.random() * m);temp[r] = [temp[i],temp[i]=temp[r]][0];//临时数组temp打乱
        }
        for(m = 0;m<l-1;m++){
            t = arr[m];
            b = !0;
            for(var k = m+1;k < l;k++){
                if(arr[k]==t){
                    b && t_arr.push(t);//统计重复的数
                    b = !1;arr[k]=temp[a++];//替换重担的数
                }
            }
        }
        console.log("重复数:"+t_arr.join(","));
        console.log("修改后:"+arr.join(","));
        console.log("重排后:"+arr.sort(function(a,b){return a>b}).join(","));
    说实话很蛋疼,为什么不是随机生成数组呢?反过来生成一些有重复的数组又操作。
      

  2.   

    如果有jQuery$.unique([11, 10, 0, 23, 16, 1, 23, 4, 20, 18, 1, 5, 11, 13, 7, 8, 20, 9, 13, 8, 23, 16, 23, 21]);