Skip to content

Commit 060301c

Browse files
committed
Build up a function to validate credit card
1 parent 8f3d6cf commit 060301c

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
function validateCreditCard(cardNumber) {
2+
const numStr = cardNumber.toString();
3+
4+
if (numStr.length !== 16) {
5+
return false;
6+
} // Number must be 16 digits.
7+
8+
const uniqueDigits = new Set(numStr);
9+
if (uniqueDigits.size < 2) {
10+
return false;
11+
} // Must have at least two different digits.
12+
13+
const lastDigit = Number(numStr[numStr.length - 1]);
14+
if (lastDigit % 2 !== 0) {
15+
return false;
16+
} // Last digit must be even.
17+
18+
let sum = 0;
19+
for (let char of numStr) {
20+
sum += Number(char);
21+
} // Sum of all digits must be greater than 16.
22+
23+
if (sum <= 16) {
24+
return false;
25+
} // Sum check
26+
27+
return true;
28+
}
29+
30+
// Test cases:
31+
32+
// Number must be 16 digits
33+
console.log(validateCreditCard(9999)); // false
34+
console.log(validateCreditCard(9999888877776662)); // true
35+
36+
// Must have at least two different digits
37+
console.log(validateCreditCard(1111111111111111)); // false
38+
console.log(validateCreditCard(1234567890123456)); // true
39+
40+
// Last digit must be even
41+
console.log(validateCreditCard(1234567890123451)); // false
42+
console.log(validateCreditCard(1234567890123452)); // true
43+
44+
// Sum of all digits must be greater than 16
45+
console.log(validateCreditCard(1111111111111110)); // false
46+
console.log(validateCreditCard(1234567890123456)); // true

0 commit comments

Comments
 (0)