方案一
已經學過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);