数组乱序是将一个数组如:[1,4,2,5,6,3]打乱顺序,如[4,1,5,3,6,2]
方法一:利用sort()
var values = [1, 2, 3, 4, 5];
values.sort(function(a,b){
return Math.random() - 0.5;
});
console.log(value);
方法二
从原数组(假如长度为n)中,随机生成一个索引 random
从原数组中删除第 random 个元素并将其push到新数组
重复第2步直到所有元素取完
最终得到一个新的打乱的数组
var values=[1, 2, 3, 4, 5];
var res=[];
while(values.length>0){
var index=Math.floor(Math.random()*values.length);
res.push(values[index]);
values.splice(index,1);
}
console.log(res);
方法三
假设原数组长度为n,生成一个0~n-1的随机数random,然后将第random个元素跟数组最后一个元素交换
生成一个0~n-2的随机数random,然后将第random个元素跟数组倒数第二个元素交换
以此类推,直到交换结束为止
var values=[1, 2, 3, 4, 5];
var n=values.length;
var temp;
while(n!=0){
var index=parseInt(Math.random()*n);
n--;
temp=values[index];
values[index]=values[n];
values[n]=temp;
}
console.log(values);