如var a=[0,1,2,3,4,5,6,7,8,9]打乱他的顺序 返回那个无序的的数组

解决方案 »

  1.   


    var a=[0,1,2,3,4,5,6,7,8,9];
    for(i=0; i<a.length; ++i){
    j = parseInt(a.length*Math.random());
    k = a[i];
    a[i] = a[j];
    a[j] = k;
    }
    document.write(a);
      

  2.   


    var a=[0,1,2,3,4,5,6,7,8,9];
    function changePosition(size,arr) {   
            for(index=size-1; index>=0; index--) {   
                //从0到index处之间随机取一个值,跟index处的元素交换   
                exchange(parseInt(Math.random()*size), index,arr);   
            }   
    }   
        
    function exchange(p1, p2,arr){   
            temp = arr[p1];   
            arr[p1] = arr[p2];   
            arr[p2] = temp;   
    }  
    changePosition(a.length,a);
    alert(a);
      

  3.   


    头回见到这种需求,照ls的试试
    用reverse反转下,行不
      

  4.   


    var a=[0,1,2,3,4,5,6,7,8,9, 10, 11];
    function complex(array){
    var arr = [];
    var len = array.length;
    for(var i = 0; i < len; i++){
    //执行10次pop操作,
    arr.push(array_pop(array));
    }
    document.write(arr.toString() + "<br />");
    };

    function array_pop(_array){
    //根据索引值与栈尾交换
    var _len = _array.length;
    var _index = parseInt(Math.random() * _len) % _len; //随机的索引 0 - 9

    var _temp = _array[_index];
    _array[_index] = _array[_len-1];
    _array[_len-1] = _temp;

    return _array.pop();
    }

    for(var c = 0; c< 20; c++){
    complex(a);
    a = [0,1,2,3,4,5,6,7,8,9, 10, 11];
    }用pop()与push()其实2L的不错, 应该设定交换次数
      

  5.   

    http://www.cnblogs.com/flurry/archive/2009/06/10/1500676.html
    给你找了篇文章,希望对你有帮助
      

  6.   


    <script type="text/javascript"> 
      var testArray=[1,2,3,4,5,6,7,8,9,10,22,33,55,77,88,99]; 
      testArray.sort(function(){return Math.random()>0.5?-1:1;});
       alert(testArray); 
    </script>这是最简单的方法数组的sort方法,请查手册
    如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:•若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
    •若 a 等于 b,则返回 0。
    •若 a 大于 b,则返回一个大于 0 的值。
      

  7.   

    Array.prototype.random = function ($lim)
    {
        var t = this.concat();
        var l = t.length;
        var e = ($lim && $lim < (l-1)) ? ($lim+1) : l;    while (--e)
        {
            var r = (Math.random() * l--) | 0;
            t[r] = t[l] | (t[l] = t[r]) & 0;
        }
        return t.slice(-$lim);
    }
    前面那个很简单,这个更高效。都是人家写的,呵呵。