zoukankan      html  css  js  c++  java
  • 数组乱序排列

    1、利用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)

    2、法一的修正版

    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中删除            
    }
    var res = [...newArr, ...arr]; console.log(res)

    3、数组排序

    function randomSort(arr) {
        return arr.sort((a, b) => {
            return Math.random() > 0.5 ? 1 : -1;
        })
    }

    4、洗牌原理:从数组的最后位置开始,然后从前面随机一个位置,对这两个数进行交换!直到循环完毕

    function shuffleSort(arr) {
        let len = arr.length;
        let i = len - 1;
        while (i >= 0) {
            let index = Math.floor(Math.random() * i);
            let temp = arr[i];
            arr[i] = arr[index];
            arr[index] = temp;
            i--;
        }
        return arr;
    }
  • 相关阅读:
    zabbix_QQ邮件告警部署(待续。。。。。。)
    FTP服务的搭建
    项目: NFS服务的搭建
    用ngxin搭建简单的下载站点
    脚本设定开机自启动
    自建小项目:自动化脚本安装ngnix项目
    Zabbix Web操作深入(待续------)
    DHCP原理与配置
    PXE高效能网络批量装机
    DNS域名解析服务
  • 原文地址:https://www.cnblogs.com/miaosj/p/10607647.html
Copyright © 2011-2022 走看看