如何随机排序数组?使用多种方式!递归,迭代,洗牌,sort方法!

方式1: 使用sort 方法 ----

 1        // 方法1 使用sort 方法  
 2         var  arr = [1,2,3,4,5,6,7,8];
 3         function foo(arr) {
 4             var cloneArr = arr.concat();
 5             cloneArr.sort(function (n1,n2) {
 6                 return Math.random() - 0.5 ;
 7             });
 8             return cloneArr;
 9         }
10         for (var i= 0 ; i < arr.length ; i++ ){
11             console.log(foo(arr));
12         }

方式2:使用递归 

    <script>
        var arr = [1,2,3,4,5,6,7,8];

        function foo(arr) {
            //使用concat 复制一个数组中 
            var  cloneArr = arr.concat();
            var result = [];
                (function name(params) {
                    if (!cloneArr.length)  return ;
                    var index = Math.floor(Math.random() * cloneArr.length);
                    result = result.concat(cloneArr.splice(index, 1));
                    arguments.callee();
                })()
            return result;
        }
        for (let i = 0; i < arr.length; i++) {
            console.log(foo(arr))            
        }
    </script>
</html>

方式3:使用迭代

       var arr = [1, 2, 3, 4, 5, 6, 7, 8];
            function foo(arr) {
                //使用concat 复制一个数组中 
                var cloneArr = arr.concat();
                var result = [];

                var len = cloneArr.length;

                for(var i= 0 ;i< len ;i++){
                    var index = Math.floor(Math.random()* cloneArr.length);
                    result = result.concat(cloneArr.splice(index,1));
                }
                return result ;
            }
            for (let i = 0; i < arr.length; i++) {
                console.log(foo(arr))
            }

方法4: 洗牌方式

                   var arr = [1, 2, 3, 4, 5, 6, 7, 8];
                    function foo(arr) {
                        //使用concat 复制一个数组中 
                        var cloneArr = arr.concat();

                        for (var i = 0; i < cloneArr.length; i++) {
                            var index = Math.floor(Math.random() * cloneArr.length);
                            var temp = cloneArr[index];
                            cloneArr[index] = cloneArr[i];
                            cloneArr[i] = temp;
                        }
                        return cloneArr;
                    }
                    for (let i = 0; i < arr.length; i++) {
                        console.log(foo(arr))
                    }

 

综合四种方法 -----认为用第四钟洗牌方式更佳!

 

posted @ 2019-02-15 10:41  yaogengzhu  阅读(260)  评论(0编辑  收藏  举报