# Need help with credit card checker

Hi all,
I don’t know what I did but my code only spits back numbers and marks them all as invalid if that makes, i think something is wrong with the function to make the last digit it’s own thing, also my company checker doesn’t run properly.

// 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: //should validate the card yet to be tested messed up and multipled evens vice odds, corrected, even last is actually the odd last, x/y = odd and z =even const validateCredit = (array) =>{ for(let i = array.length - 1; i >= 0; i-- ){ let lastNum = array[array.length - 1]; let x = array.filter((element, index) =>{ return index % 2 === 1 }); return x; let y = x * 2; return y; if(y > 9){ y - 9; } return y; let evenLast = 0 if (array.length % 2 === 1){ evenLast = lastNum }; if (evenLast * 2 > 9){ (evenLast + 9) / 2 } else { evenLast / 2 } return evenLast; if (array.length % 2 === 1){ return y.pop().push(evenLast) }else{ return y } let z = array.filter((element, index) =>{ return index % 2 === 0 }); let sumZ = z.reduce((accumulator,currentValue) => { return accumulator + currentValue; }, 0); let sumY = y.reduce((accumulator,currentValue) => { return accumulator + currentValue; }, 0); if((sumY + sumZ) % 10 === 0){ return true } else{ return false } } } // end validation checker const findInvalidCards = (nestedArray) =>{ let invalidCards = []; let validCards = []; for (let j = 0; j < nestedArray.length; j++){ if(validateCredit(nestedArray) === true){ validCards.push(nestedArray[j]); } else{ invalidCards.push(nestedArray[j]); } } console.log('The following are invalid cards: ' + invalidCards); console.log('The following are valid cards: ' + validCards); } const idInvalidCardCompanies = (nestedArray) =>{ let companyCode = nestedArray[0] switch (companyCode){ case 3: return 'Amex'; break; case 4: return 'Visa'; break; case 5: return 'MasterCard'; break; case 6: return 'Discover'; break; default: console.log('Not a valid card company.') } }; console.log(validateCredit(valid1))

code returns at line 34. Nothing is executed after that line as the code is unreachable.