说起来 数组乱序,这是大厂经常考的一道题,考验的是对数组的操作。那么实现数组乱序,常见经典的解决方法有两种:

面试题十五:js/javascript数组乱序及洗牌算法-QUI-Notes

1.sort() 

取巧排序 ,之所以说取巧,这是一种伪随机。当数组过多是, 随机性会变差!

原理:通过sort随机生成一个数,决定数组相邻两位的排序,直到数组排序结束。
 

function shuffle(arr){
 return  arr.sort(function(){
 	return	Math.random()-0.5
 })
}

2.洗牌算法 Fisher–Yates shuffle

原理:随机抽出数组里面的一个元素与最后一个元素换位置,直到排序完成(每次数组长度减一,到数组长度为空截止)。
 

function shuffle(arr){
	var l = arr.length;
	while(l>1){
		let index = Math.floor(Math.randow() * l--);
		[arr[index],arr[l]] = [arr[l],arr[index]];
	}
	return arr;
}

注意:这题很大程度上,是手写提,大家尽量理解其中的意思,然后记忆。加油,打工人!