rotate an array in JavaScript
本问题已经有最佳答案,请猛点这里访问。
我要旋转整个数组,例如:
我目前的功能是:
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); } }; |
编辑:看来你想完成什么有些困惑。我上面的答案假设您的意思是无序排列(随机排列数组中元素的顺序)。