在JavaScript中旋转数组

时间:2014-11-07 15:20:09

标签: javascript arrays function shift

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

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

我目前的职能是:

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

请告诉我我做错了什么。

2 个答案:

答案 0 :(得分:1)

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 :(得分:0)

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

相反,您希望从数组中随机选择并移动该元素。试试这个(未经测试):

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);
    }
};
编辑:似乎对你正在努力实现的目标感到困惑。我上面的回答假设你是指shuffle(随机化数组中元素的顺序)。