js數組亂序輸出 數組亂序排列


網上看的數組亂序輸出,要么不合實際,要么代碼繁瑣。自己試了下,希望能給大家帶來幫助。

重要思想也是Math.random*arr.length隨機下標,然后刪除取到的元素,繼續隨機下標。

//將數組亂序輸出
        var arr = [1,2,3,4,5,6,7,8,9,10];
        var newArr = [];
            for(var i=0; i<arr.length; i++){
                 var index = Math.floor(Math.random()*arr.length);//隨機下標
                     newArr.push(arr[index]);//將隨機出的元素,存放新數組newArr中去
                     arr.splice(index,1);//    將隨機出的元素在arr中刪除            
            }
            //arr中刪除隨機出的元素,arr.length-1,同時i++,導致循環不會10次,會是5次.最后得到newArr中只有一半的隨機數字,arr中剩下另一半. 將其合並到一起,得到res
            var res =[...newArr,...arr];
            console.log(res)

結果如下:

隨后也有個問題,這個其實只隨機了一半的數字,后一半沒有隨機,只是合並了上去。

改進后:

var arr = [1,2,3,4,5,6,7,8,9,10];
        var newArr = [];
        var len = arr.length;
            for(var i=0; i<len; i++){
                 var index = Math.floor(Math.random()*arr.length);//隨機下標
                     newArr.push(arr[index]);//將隨機出的元素,存放新數組newArr中去
                     arr.splice(index,1);//    將隨機出的元素在arr中刪除            
            }
            //arr中刪除隨機出的元素,arr.length-1,同時i++,導致循環不會10次,會是5次.最后得到newArr中只有一半的隨機數字,arr中剩下另一半. 將其合並到一起,得到res
            var res =[...newArr,...arr];
            console.log(res) 

把len當成,作為循環條件,最后所有的都是隨機的,結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM