js生成永不重复随机码

5 篇文章 0 订阅
4 篇文章 0 订阅
 function createUniqueId(n) {
        var random = function() { // 生成10-12位不等的字符串
            return Number(Math.random().toString().substr(2)).toString(36); // 转换成十六进制
        };
        var arr = [];
        function createId() {
            var num = random();
            var _bool = false;
            arr.forEach(v => {
                if(v === num) _bool = true;
            });
            if(_bool) {
                createId();
            }else {
                arr.push(num);
            }
        }
        var i = 0;
        while(i < n) {
            createId();
            i++;
        }
        return arr;
    }

附带一篇例子:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>圆点测试</title>
    <!--jquery CDN-->
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <script src="index.js"></script>
    <link rel="stylesheet" href="index.css">
</head>
<body>
    <div id="app">
        <!--<div class="item-panel" v-for="item in itemList">
            <ul>
                <li v-for="i in item.num" class="other-panel"></li>
                <li v-for="j in (8 - item.num)"></li>
            </ul>
        </div>-->

    </div>
</body>
</html>
$(function () {
    var itemList = [{"num":2},{"num":6},{"num":4},{"num":1},{"num":5},{"num":4},{"num":7}];
    var liPanel = `<li></li>`;
    var liPanelB = `<li class="other-panel"></li>`;
    // 生成随机数数组
    var randomNumberArray = createUniqueId(itemList.length);
    // 渲染页面标签
    for(var item in itemList){
        // 后台返回的数值
        var num = itemList[item].num;
        // 父元素
        var itemPanel = `<div class="item-panel"><ul id="key${randomNumberArray[item]}"></ul></div>`;
        // 生成父元素
        $("#app").append(itemPanel);
        // 生成li
        for(var i = 0; i < num;i++) {
           $("#key"+randomNumberArray[item]+"").append(liPanelB);
        }
        for(var j = 0; j < (8-num);j++) {
            $("#key"+randomNumberArray[item]+"").append(liPanel);
        }
    }
    // 生成永不重复的随机数函数
    function createUniqueId(n) {
        var random = function() { // 生成10-12位不等的字符串
            return Number(Math.random().toString().substr(2)).toString(36); // 转换成十六进制
        };
        var arr = [];
        function createId() {
            var num = random();
            var _bool = false;
            arr.forEach(v => {
                if(v === num) _bool = true;
            });
            if(_bool) {
                createId();
            }else {
                arr.push(num);
            }
        }
        var i = 0;
        while(i < n) {
            createId();
            i++;
        }
        return arr;
    }
});
*{
    margin: 0;
    padding: 0;
}
#app{
    width: 1200px;
    min-height: 200px;
    border: solid 1px #969696;
    box-sizing: border-box;
    padding: 10px;
    margin:  0 auto;
    display: flex;
    /*自动换行*/
    flex-wrap: wrap;
    /*均匀排列*/
    justify-content: space-between;
    align-items: center;
}
#app .item-panel{
    width: 170px;
    height: 80px;
    border: solid 1px red;
    display: flex;
    justify-content: center;
    align-items: center;
}
#app .item-panel ul{
    display: flex;
    justify-content: center;
    align-items: center;
}
#app .item-panel ul li{
    list-style: none;
    width: 10px;
    height: 10px;
    display: flex;
    justify-content: center;
    align-items: flex-end;
    border-radius: 50%;
    border: solid 1px #666666;
    margin-right: 5px;
}
#app .item-panel ul .other-panel{
    background: red;
}

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值