在JavaScript中旋转数组

rotate an array in JavaScript

本问题已经有最佳答案,请猛点这里访问。

我要旋转整个数组,例如:

[1,2,3,4]变为[3,4,1,2]

我目前的功能是:

1
2
3
4
5
function shuffle(o){
    for(i = 0; i<Math.floor((Math.random() * o.length)); i++){
        o.push(o.shift());
    }
};

请告诉我我做错了什么。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function shuffle(o){
    for(i = 0; i < o.length; i++)
     {
        var Index = o.indexOf(i);
        index=index+2;
        if(index>3)
        {
            index=index-2;
          var item=o.splice(index,1)
        o.push(item);
        }  
         else

         {var item=o.splice(index,1)
          o.push(item)
        }        
}
};


您当前的函数只是将其移动一个随机量,即它将其偏移一个随机量。

相反,您希望从数组中随机选取并移动该元素。尝试此操作(未测试):

1
2
3
4
5
6
7
function shuffle(o){
    for(i = 0; i < o.length; i++){
        var randomIndex = Math.floor(Math.random() * (o.length - i));
        var item = o.splice(randomIndex, 1);
        o.push(item);
    }
};

编辑:看来你想完成什么有些困惑。我上面的答案假设您的意思是无序排列(随机排列数组中元素的顺序)。