Sha256: ae6022dab6fc6059b80cb85f89c9f017d85554cb6b06cb087ae78b110db57710
Contents?: true
Size: 637 Bytes
Versions: 251
Compression:
Stored size: 637 Bytes
Contents
'use strict'; function isValid(number) { number = number.replace(/\s/g, ''); const digits = [...number]; const sum = digits // convert to integers .map(d => parseInt(d, 10)) // double even positions (odd indexes) .map((d, i) => { if (i % 2 !== 0) { return d * 2; } return d; }) // limit to digits less than 10 .map(d => { if (d > 9) { return d - 9; } return d; }) // sum all digits .reduce((d, acc) => d + acc, 0); return sum > 0 && sum % 10 === 0; } function Luhn(number) { this.valid = isValid(number); } module.exports = Luhn;
Version data entries
251 entries across 251 versions & 1 rubygems