javaScript实现数组的随机排序

方案一

已经学过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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章