-
Notifications
You must be signed in to change notification settings - Fork 0
/
cardChecker.js
110 lines (97 loc) · 3.56 KB
/
cardChecker.js
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*Context: The company that you work for suspects that credit card distributors have been mailing out cards that have invalid numbers. In this project, you have the role of a clerk who checks if credit cards are valid. Every other clerk currently checks using pencil and paper, but you’ll be optimizing the verification process using your knowledge of functions and loops to handle multiple credit cards at a time. Unlike the other clerks, you can spend the rest of your time relaxing!
As you progress through the steps, use the terminal and console.log() statements to check the output of your loops and functions.*/
// All valid credit card numbers
const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8];
const valid2 = [5, 5, 3, 5, 7, 6, 6, 7, 6, 8, 7, 5, 1, 4, 3, 9];
const valid3 = [3, 7, 1, 6, 1, 2, 0, 1, 9, 9, 8, 5, 2, 3, 6];
const valid4 = [6, 0, 1, 1, 1, 4, 4, 3, 4, 0, 6, 8, 2, 9, 0, 5];
const valid5 = [4, 5, 3, 9, 4, 0, 4, 9, 6, 7, 8, 6, 9, 6, 6, 6];
// All invalid credit card numbers
const invalid1 = [4, 5, 3, 2, 7, 7, 8, 7, 7, 1, 0, 9, 1, 7, 9, 5];
const invalid2 = [5, 7, 9, 5, 5, 9, 3, 3, 9, 2, 1, 3, 4, 6, 4, 3];
const invalid3 = [3, 7, 5, 7, 9, 6, 0, 8, 4, 4, 5, 9, 9, 1, 4];
const invalid4 = [6, 0, 1, 1, 1, 2, 7, 9, 6, 1, 7, 7, 7, 9, 3, 5];
const invalid5 = [5, 3, 8, 2, 0, 1, 9, 7, 7, 2, 8, 8, 3, 8, 5, 4];
// Can be either valid or invalid
const mystery1 = [3, 4, 4, 8, 0, 1, 9, 6, 8, 3, 0, 5, 4, 1, 4];
const mystery2 = [5, 4, 6, 6, 1, 0, 0, 8, 6, 1, 6, 2, 0, 2, 3, 9];
const mystery3 = [6, 0, 1, 1, 3, 7, 7, 0, 2, 0, 9, 6, 2, 6, 5, 6, 2, 0, 3];
const mystery4 = [4, 9, 2, 9, 8, 7, 7, 1, 6, 9, 2, 1, 7, 0, 9, 3];
const mystery5 = [4, 9, 1, 3, 5, 4, 0, 4, 6, 3, 0, 7, 2, 5, 2, 3];
// An array of all the arrays above
const batch = [
valid1,
valid2,
valid3,
valid4,
valid5,
invalid1,
invalid2,
invalid3,
invalid4,
invalid5,
mystery1,
mystery2,
mystery3,
mystery4,
mystery5,
];
// Add your functions below:
//The purpose of validateCred() is to return true when an array contains digits of a valid credit card number and false when it is invalid.
const validateCred = arr => {
let lastNumber = arr.pop();
arr.reverse();
let modified = arr.slice(0);
for (let i = 0; i < modified.length; i += 2) {
modified[i] *= 2;
if (modified[i] > 9) {
modified[i] -= 9;
}
}
modified.push(lastNumber);
// console.log(modified);
let sum = modified.reduce((acc, val) => acc + val);
//console.log(sum);
if (sum % 10 === 0) {
return true;
} else {
return false;
}
};
//console.log(validateCred(valid2));
//const invalidCards= [];
const findInvalidCards = nestedArray => {
const invalidCards= [];
for (let i = 0; i < nestedArray.length; i++) {
console.log(validateCred(nestedArray[i]));
// validateCred(nestedArray[i]);
//if (validateCred(nestedArray[i]) === false) {
// invalidCards.push(nestedArray[i]);
// }
// return invalidCards;
// console.log(invalidCards);
//console.log(i);
}
}
//console.log(findInvalidCards());
console.log(findInvalidCards(batch));
if (findInvalidCards === false) {
invalidCards.push;
console.log(invalidCards);
}
/*
const initialValue = 0;
const sumOfAllNumbers = validateCred.reduce(
(previousValue, currentValue) => previousValue + currentValue,
initialValue
);
console.log(sumOfAllNumbers);
{
if (sumOfAllNumbers % 10 === 0) {
console.log("Valid card number.");
} else {
console.log("Invalid card number!");
}
}
*/
//array.reduce() adds up all the values