侧边栏壁纸
博主头像
前端江太公博主等级

不知江月待何人

  • 累计撰写 178 篇文章
  • 累计创建 3 个标签
  • 累计收到 127 条评论
标签搜索

目 录CONTENT

文章目录

js生成年月+字母+五位数的编码,实现字母递增与五位数序号递增

前端江太公
2022-09-02 / 0 评论 / 0 点赞 / 1,062 阅读 / 1,236 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-05-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
广告 广告

@TOC

需求:

1、要求生成的编码格式为YYYYMMA00001。例如:202209A00001
2、序号 00001递增,当序号大于99999时,字母A递增。例如:A99999 时递增为B00001

如图所示:

在这里插入图片描述

实现:

年月就不说了。获取一下补个零就行了。

字母递增:

 // 获取字母(A大写 a小写)
 // index 从0开始
 let letter = String.fromCharCode("A".charCodeAt(0) + index);

判断一下,当序号大于99999时,index+1,在给end从1开始计数(end为序号)

        // 满99999 字母递增 序号重置为1
        let index = 0;
        if (end > 99999) {
          end = total - 99999 + 1;
          index++;
        }

        end = "00000" + end;
        end = end.substr(end.length - 5, 5);
        // 获取字母(A大写 a小写)
        let letter = String.fromCharCode("A".charCodeAt(0) + index);

在这里插入图片描述
在这里插入图片描述

序号递增:

        // total 数据现有总长度 新增+1
        let end = total + 1;
        
        end = "00000" + end;
        end = end.substr(end.length - 5, 5);

核心代码:

// total 后台查回来的数据总数
function code(total) {
        // total 数据现有总长度 新增+1
        let end = total + 1;
        //获取当月时间 YYYYMM
        let date = new Date();
        let year = date.getFullYear();
        let month = date.getMonth() + 1;
        if (month >= 1 && month <= 9) {
          month = "0" + month; //自动补零
        }
        let currentdate = year + month;

        // 满99999 字母递增 序号重置为1
        let index = 0;
        if (end > 99999) {
          end = total - 99999 + 1;
          index++;
        }

        end = "00000" + end;
        end = end.substr(end.length - 5, 5);
        // 获取字母(A大写 a小写)
        let letter = String.fromCharCode("A".charCodeAt(0) + index);

        return currentdate + letter + end; //年月+字母+5位序号
}

pass:给后人留个坑吧:

在这里插入图片描述

这块儿的逻辑有问题,只能算到B。C就不行了。也就是说AB两个字母都可以算满,99999x2 大概20w的数据,嗯,短时间内肯定是发现不了,本来想用取余算的。算了,早就不想干了,20w的数据,不得添加好几年??我早就走了,给后人留个坑吧,奈斯!!拜拜!!!

把字母递增和序号递增单独拧出来还是可以用的。。。

0
广告 广告

评论区