如何随机打乱一个js数组?
例如一个数组为[3, 3, 6, 0, 6]
,现在想让该数组内部随机打乱,例如变成如下形式
[6, 0, 6, 3, 3]
由于js本身没有shuffle
方法,所以就要自己实现一个shuffle
方法来达到这个目的。
/**
* Shuffles array in place.
* @param {Array} a items The array containing the items.
*/
function shuffle(a) {
var j, x, i;
for (i = a.length; i; i--) {
j = Math.floor(Math.random() * i);
x = a[i - 1];
a[i - 1] = a[j];
a[j] = x;
}
}
ES6的写法
/**
* Shuffles array in place. ES6 version
* @param {Array} a items The array containing the items.
*/
function shuffle(a) {
for (let i = a.length; i; i--) {
let j = Math.floor(Math.random() * i);
[a[i - 1], a[j]] = [a[j], a[i - 1]];
}
}
然后这样使用
var myArray = ['1','2','3','4','5','6','7','8','9'];
shuffle(myArray);
此时的myArray
已经被重新打乱了。
文章参考自:https://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array
如果您觉得本文对您有用,欢迎捐赠或留言~
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=651