当前位置: 首页 > article >正文

生成身份证校验位

废不多说, 直上代码:

function idNoValidateNum(str){
    var b = 11, 
    w = idNoValidateNum.weightingFactor, 
    m = str.split('').reverse().reduce(function (c, v, i) {
        return c + w[i % w.length] * v
    },0)%b;
    return idNoValidateNum.charset[m]
}
// 加权因子.可以计算(Math.pow(2,i+1)%11),这里列举
idNoValidateNum.weightingFactor = [1,6,3,7,9,10,5,8,4,2].reverse()
// 字符集
idNoValidateNum.charset = '10X98765432'

为了保证两个常量不被改变, 可以如下方式定义属性值:

Object.defineProperty(idNoValidateNum, 'charset', {
    /**
     * 字符集
     */
    value: '10X98765432'
    ,
    writable: false // 防止被修改
});

加权因子计算方法(从右到左):

new Array(17).fill(0).map((v,i)=>Math.pow(2,i+1)%11)
// returns [2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7]

Over(2024-11-23).


http://www.kler.cn/a/406950.html

相关文章:

  • 赛氪媒体支持“2024科普中国青年之星创作交流活动”医学专场落幕
  • electron主进程和渲染进程之间的通信
  • Web3.0安全开发实践:Clarity最佳实践总结
  • 创客匠人老蒋:个人IP如何获取有效流量?
  • C#(11) 运算符重载
  • 46并发编程(线程、进程)
  • flink学习(4)——方法的使用—对流的处理(keyBy,Reduce)
  • Vue3 源码解析(三):静态提升
  • css样式覆盖
  • vue3 uniapp 扫普通链接或二维码打开小程序并获取携带参数
  • 什么是C++中的模板特化和偏特化?
  • 嵌入式:Flash的分类以及Jlink/J-flash的编程支持
  • 使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
  • 超详细:Redis分布式锁
  • Java三大特性:封装、继承、多态【详解】
  • Leetcode148. 排序链表(HOT100)
  • 云轴科技ZStack亮相2024 IDC中国生态峰会,共塑AI时代IT生态新格局
  • 递归算法专题一>Pow(x, n)
  • 计算机毕业设计Python+卷积神经网络CNN交通标志识别 机器学习 深度学习 爬虫 数据可视化 人工智能 模型训练
  • Node.js 和 Socket.IO 实现实时通信
  • 【在Linux世界中追寻伟大的One Piece】多线程(一)
  • ElasticSearch学习笔记四:基础操作(二)
  • Android 基于Camera2 API进行摄像机图像预览
  • Unity DOTS中的Entity
  • 每日计划-1122
  • Linux上安装单机版Kibana6.8.1