第一种方法:利用冒泡排序的原理,使两两元素比较的结果可正可负,它们的位置可换可不换,从而达到随机的目的。
var arr = ["鹿晗", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "赵本山"];
arr.sort(function () {
return Math.random() - 0.5; // 值为 -0.5 ~ 0.5 的随机数
});
console.log(arr);
第二种方法:先找到一个随机的元素,写入新数组,原数组删除该元素,再在原数组找一个随机的元素,循环。
var arr = ["鹿晗", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "赵本山"];
var length = arr.length; // 原数组一开始的长度
var newArr = [];
for (var i = 0; i < length; i++) { // 注意,这里是length,不是arr.length
var index = Math.floor(Math.random() * (length - i)); // 注意,这里是length
newArr[i] = arr[index];
arr.splice(index, 1); // 删除该元素
}
console.log(newArr);
也可以用while循环来实现:
var arr = ["鹿晗", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "赵本山"];
var newArr = [];
while (arr.length != 0) {
var index = Math.floor(Math.random() * arr.length); // 这里使arr.length
newArr.push(arr[index]);
arr.splice(index, 1);
}
console.log(newArr);