JS随机打乱数组的多种方法

方法一:最精简代码的打乱方法

// An highlighted block
var arr = [4,1,67,12,45,121,3];
arr.sort(function() {
    return (0.5-Math.random());
});
console.log(arr);

这里介绍下sort()函数,在JS中Array对象里内置了一个函数:

arrayobj.sort([sortfunction])

此方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。

sortFunction为可选项。

是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

sortFunction方法有两个参数。分别代表每次排序比较时的两个数组项。sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。

方法二:这个方法打得比较乱

var Arr = [4,1,67,12,45,121,3];
function randArr(arr) {
    for (var i = 0; i < arr.length; i++) {
        var iRand = parseInt(arr.length * Math.random());
        var temp = arr[i];
        arr[i] = arr[iRand];
        arr[iRand] = temp;
    }
    return arr;
}
//测试:
console.log(randArr(Arr));

随机播放列表案例
首先要明确,我们对播放列表打乱的前提是不能对原数组进行更改的。

//获取min和max之间的一个随机整数[5,100];
function getRandomInt(min,max){
return Math.floor(Math.random()*(max-min+1))+min;
}
//打乱数组
function shuffle(arr){
let _arr = arr.slice(); //slice不会影响原来的数组,但是splice就会影响原来的arr数组
for (let i = 0; i<_arr.length; i++;){
let j = getRandomInt(0,i);
let t = _arr[i];
_arr[i] = _arr[j];
_arr[j] = t;
}
return _arr;
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.duanlonglong.com/qdjy/238.html