数组内元素随机排序的三种方法

一、利用数组方法sort

1
// 数组的sort方法,如果a>b,则正序排,a

二、经典的洗牌算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 我们先定义一个随机函数,用于取到x-y区间的随机数 
function getRandom(min, max) {
// +1是为了取到上限,
return Math.floor(Math.random() * (max - min + 1) + min)
}
function shuffle(arr) {
// for 循环,随机替换掉每一个数组元素
for(var i = 0; i < arr.length; i++) {
// 取一个随机数
var j = getRandom(0,arr.length)
var x = arr[j]
arr[i] = arr[j]
arr[j] = x
}
return arr
}

三、push进新数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 递归思想,每执行一次,取一个数组索引的随机数,如此反复,直到数组长度为一,结束循环 
function randomArr(arr, newArr) {
if(arr.length === 1) {
newArr.push(arr[0])
return newArr
}
// 取随机数
var random = Math.ceil(Math.random() * arr.length) - 1
// 随机push
newArr.push(arr[random])
// 旧数组删除对应位置
arr[random].splice(random, 1)
// 再次调用
return randomArr(arr, newArr)
}