• 如何随机排序数组?使用多种方式!递归,迭代,洗牌,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))
                        }

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

    一份帮助文档,无论多么仔细,都不会帮助主人多敲一行代码!
  • 相关阅读:
    ubuntu18 faster-rcnn
    osgViewer应用基础
    error C2086: “int WINGDIAPI”: 重定义
    test5
    test3
    test2
    Kinect关节数据
    MySQL乱码问题以及utf8mb4字符集
    mysql5.7执行sql语句报错:In aggregated query without GROUP BY, expression #1 of SELECT list contains nonagg
    yum安装软件报错:curl#6
  • 原文地址:https://www.cnblogs.com/yaogengzhu/p/10382244.html
Copyright © 2020-2023  润新知