方案一
已经学过JavaScript
,我们当然就可以用数组的排序方法 sort
,这是最简单的方式来实现了.
sort
方法的基本语法:
arr.sort();
不传参数就默认排序,可以传入一个函数作为参数,自定义排序规则
整体返回:
返回排序的数组
是否改变原数组:
改变原数组
使用 sort
实现数组排序的基本语法如下:
arr.sort(function(a,b){
return Math.random()-0.5; //==>数组乱序排列
})
话不多说,直接看代码:
let arr = [11,24,56,23,45,96,25,75];
arr.sort(function(a,b){
return Math.random() - 0.5;
})
console.log(arr);
2. 方案二
在方案二中我们需要借助一个空数组,通过产生随机数,将随机数选中的数据放置在空数组中,然后删除已经被选出的数据,一直循环,直至所有数据被循环完毕.
代码如下:
let arr = [11,24,56,23,45,96,25,75];
function RandSort(arr) {
let newArr = new Array();
while(arr.length > 0 ) {
let randNum =parseInt(Math.random() * arr.length) ;
//讲选出的数据放入新数组
newArr.push(arr[randNum]);
//删除数组中当前选中的数据
arr.splice(randNum,1);
}
return newArr;
}
let arr1 = RandSort(arr);
console.log(arr1);
值得注意的是不要直接在函数里面定义length,后面直接使用length的值在我们的方法中,length的值是一直变小的.
方案三
通过一个中间数来实现,这个中间数据在我们平时交换数据内容的时候回经常用到,如下面的代码:
let arr = [11,24,56,23,45,96,25,75];
function sortArr(arr) {
let length = arr.length;
let temp;
for(i = 0 ; i < length ; i++) {
let index = parseInt(Math.random() * length);
let temp = arr[index];
arr[index] = arr[i];
arr[i] = temp;
}
return arr;
}
let arr1 = sortArr(arr);
console.log(arr1);