Credit Card Checker

Hey guys, I am stuck on the credit card cruncher. I’ve stopped and started multiple times. In this instance my count variable won’t appear returned on the console. If you have any tips on the exercise in general would be greatly appreciated. Thanks

https://www.codecademy.com/paths/front-end-engineer-career-path/tracks/fecp-22-javascript-syntax-part-ii/modules/wdcp-22-credit-card-checker/projects/credit-card-checker

// 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:
function validateCred(arr){
  // get the check digit with pop
  const a = arr.pop()
  console.log(a)
  // reverse the array to access last digit at index [0]
  const b = arr.reverse()
  console.log(b)
  for (let x = 0; x < b.length; x +=2){
    if (b[x] > 5){
      b[x].map(item => item * 2 -9)
    }
    else {
      return b[x] * 2
    }
  }
  const count = 0;
  for (y = 0; y < arr.length; y++){
    count += b[y]
  }
  console.log(count)
}

validateCred(valid1)

maybe change
const count = 0;
to
let count = 0;
because you need the value of count to change.

Also, in the for-loop:
You may need to change b[x] > 5 to be b[x] >= 5
and
b[x].map(item => item * 2 - 9)
should probably be more like
b[x] = b[x] * 2 - 9;
because .map creates a new array, and you just need to change that one element in the array.
and
return b[x] * 2
should probably be
b[x] = b[x] * 2
because doing return would end the function there, and you don’t want that.

Also, at the end of the function,
you may need something like:

  count += a;
  return count % 10 === 0;

so that the sum of the digits (which is count in your code) includes the check digit (which is a),
and so that the function returns true or false, depending on whether the sum of the digits is a multiple of 10.

Also, your code changes that values in the original array.
You could use .slice() or Array.from() to make a copy of the array instead.

function validateCred(numbers){
  const arr = numbers.slice();