第一种方法。
Math.random()返回介于 0(包含) ~ 1(不包含) 之间的一个随机数。
这种方法是循环过程中通过Math.random()函数产生的随机值,在数组中这个随机值位置的数和arr[i]位置的数据交换,循环结束,产生随机数组。
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
function randSort1(arr) {
for(var i = 0, len = arr.length; i < len; i++) {
var rand = parseInt(Math.random() * len);
var temp = arr[rand];
arr[rand] = arr[i];
arr[i] = temp;
}
return arr;
}
console.log(randSort1(arr));
第一种方法结果
第二种方法。
splice() 方法用于插入、删除或替换数组的元素。
注意:这种方法会改变原始数组!。
第二种办法,建立一个新的空数组,并通过Math.random()随机得到小于数组长度的randomIndex,把原数组中的arr[randomIndex]有序的放到新数组中。同时通过arr.splice(randomIndex, 1)把刚放到新数组中的数据删除。以此类推,直至arr中没有数据产生新的随机数组。
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
function randSort2(arr) {
var mixedArray = [];
while(arr.length > 0) {
var randomIndex = parseInt(Math.random() * arr.length);
mixedArray.push(arr[randomIndex]);
arr.splice(randomIndex, 1);
}
return mixedArray;
}
console.log(randSort2(arr));
第二种方法结果
第三种方法。
sort() 方法用于对数组的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。当不带参数的时候默认排序顺序为按字母升序。
可以看出Math.random()得到的是0~1之间的随机数。众所周知,sort()可以调用一个函数做为参数,如果这个函数返回的值为-1表示数组中的a项排在b项前。如此一来,可以写一个随机函数,让Math.random()随机出来的数与0.5做为一个比较,如果大于.5就返回 -1(a排在b前面),反之返回1(b排在a前面)。
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.sort(function() {
return Math.random() - 0.5;
})
console.log(arr);
第三种方法结果
文章仅为个人学习观点,如有错误,还请各位朋友指导,我将不胜感激。
与此同时写文章时参考了一些博文资料,如有侵权请立即与我联系解决,并表示非常抱歉!
谢谢你长的那么美,并看了我的文章~
网友评论