假设我有一组图像。现在我想总是有相同的顺序,但不同的起始位置。我可以在 Backstretch 中强制索引,但不能在它已经启动第一张图像之前,所以很自然,我只想偏移数组。
['1','2','3','4']
应该变成,取决于随机变量
['3','4','1','2'].
我怎样才能做到这一点?
假设我有一组图像。现在我想总是有相同的顺序,但不同的起始位置。我可以在 Backstretch 中强制索引,但不能在它已经启动第一张图像之前,所以很自然,我只想偏移数组。
['1','2','3','4']
应该变成,取决于随机变量
['3','4','1','2'].
我怎样才能做到这一点?
TJ Crowders 的回答非常好,但如果要保留订单,这里是我的 2 美分
var arr = ['1', '2', '3', '4']; //your source array
var rand = Math.round(Math.random()*arr.length); //get the random
var part = arr.splice(0, rand); //split from start to that number
arr = arr.concat(part); //concat back to push the part to the end for the order to be preserved.
//get your item arr[0]
您可以创建一个函数,通过随机生成的 n 数移动元素。
function randShiftArr(arr) {
var rand = Math.floor(Math.random() * arr.length);
for (var i = 0; i < rand; i++)
arr.unshift(arr.pop())
return arr;
}
var arr = ['1', '2', '3', '4'];
var shifted = randShiftArr(arr);
alert(shifted.join());