国际银行卡模10(mod10) javascript算法

2021-06-18  本文已影响0人  泽赫

一言不合直接上源码

export function mod10ValidateCreditCard(s) {
  // remove non-numerics
  var v = '0123456789',
    w = '',
    i,
    j,
    k,
    m,
    c,
    a,
    x;
  for (i = 0; i < s.length; i++) {
    x = s.charAt(i);
    if (v.indexOf(x, 0) !== -1) {
      w += x;
    }
  }
  // validate number
  j = w.length / 2;
  k = Math.floor(j);
  m = Math.ceil(j) - k;
  c = 0;
  for (i = 0; i < k; i++) {
    a = w.charAt(i * 2 + m) * 2;
    c += a > 9 ? Math.floor(a / 10 + (a % 10)) : a;
  }
  for (i = 0; i < k + m; i++) {
    c += w.charAt(i * 2 + 1 - m) * 1;
  }
  return c % 10 === 0;
}

如何使用

const card='xxxx xxxx xxxx xxxx';
mod10ValidateCreditCard(card); // true or false

上一篇 下一篇

猜你喜欢

热点阅读