zoukankan      html  css  js  c++  java
  • 银行卡校验规则(Luhn算法)

    luhmCheck: bankno => {
    var lastNum = bankno.substr(bankno.length - 1, 1) // 取出最后一位(与luhm进行比较)

    var first15Num = bankno.substr(0, bankno.length - 1) // 前15或18位
    var newArr = []
    for (var i = first15Num.length - 1; i > -1; i--) {
    // 前15或18位倒序存进数组
    newArr.push(first15Num.substr(i, 1))
    }
    var arrJiShu = [] // 奇数位*2的积 <9
    var arrJiShu2 = [] // 奇数位*2的积 >9

    var arrOuShu = [] // 偶数位数组
    for (var j = 0; j < newArr.length; j++) {
    if ((j + 1) % 2 === 1) {
    // 奇数位
    if (parseInt(newArr[j]) * 2 < 9) {
    arrJiShu.push(parseInt(newArr[j]) * 2)
    } else {
    arrJiShu2.push(parseInt(newArr[j]) * 2)
    }
    } else {
    arrOuShu.push(newArr[j])
    }
    }

    var jishuChild1 = [] // 奇数位*2 >9 的分割之后的数组个位数
    var jishuChild2 = [] // 奇数位*2 >9 的分割之后的数组十位数
    for (var h = 0; h < arrJiShu2.length; h++) {
    jishuChild1.push(parseInt(arrJiShu2[h]) % 10)
    jishuChild2.push(parseInt(arrJiShu2[h]) / 10)
    }

    var sumJiShu = 0 // 奇数位*2 < 9 的数组之和
    var sumOuShu = 0 // 偶数位数组之和
    var sumJiShuChild1 = 0 // 奇数位*2 >9 的分割之后的数组个位数之和
    var sumJiShuChild2 = 0 // 奇数位*2 >9 的分割之后的数组十位数之和
    var sumTotal = 0
    for (var m = 0; m < arrJiShu.length; m++) {
    sumJiShu = sumJiShu + parseInt(arrJiShu[m])
    }

    for (var n = 0; n < arrOuShu.length; n++) {
    sumOuShu = sumOuShu + parseInt(arrOuShu[n])
    }

    for (var p = 0; p < jishuChild1.length; p++) {
    sumJiShuChild1 = sumJiShuChild1 + parseInt(jishuChild1[p])
    sumJiShuChild2 = sumJiShuChild2 + parseInt(jishuChild2[p])
    }
    // 计算总和
    sumTotal =
    parseInt(sumJiShu) +
    parseInt(sumOuShu) +
    parseInt(sumJiShuChild1) +
    parseInt(sumJiShuChild2)

    // 计算Luhm值
    var k = parseInt(sumTotal) % 10 === 0 ? 10 : parseInt(sumTotal) % 10
    var luhm = 10 - k

    if (+lastNum === luhm && lastNum.length !== 0) {
    return true
    } else {
    return false
    }
    },
  • 相关阅读:
    前后台分离--概念相关
    dubbo概述
    memcache
    分布式系统事务
    2018书单索引
    Lucene原理之概念
    java 通用对象排序
    LightOJ1214 Large Division —— 大数求模
    LightOJ1336 Sigma Function —— 质因子分解、约数和为偶数
    LightOJ1245 Harmonic Number (II) —— 规律
  • 原文地址:https://www.cnblogs.com/gudun/p/9521910.html
Copyright © 2011-2022 走看看