1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| function isValidTWId(str) { if (str.length !== 10) return false const n = alphaToNumber(str[0]) const firstNumber = Math.floor(n / 10) const secondNumber = n % 10
let sum = firstNumber * 1 + secondNumber * 9 for (let i = 1; i < str.length - 1; i++) { sum += str[i] * (9 - i) } sum += Number(str[9]) return sum % 10 === 0 } function alphaToNumber(alpha) { const mapping = { A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, G: 16, H: 17, I: 34, J: 18, K: 19, L: 20, M: 21, N: 22, O: 35, P: 23, Q: 24, R: 25, S: 26, T: 27, U: 28, V: 29, W: 32, X: 30, Y: 31, Z: 33, } return mapping[alpha] } console.log(isValidTWId('A123456789')) console.log(isValidTWId('A234567890'))
|