Credit-card-checker project

Hi everybody, I’m stuck with this project, I did this function,“validateCred” and it seems it’s working but when I’m going on with the next, I have this problem…
I have seen the solution, but I don’t understand why I can’t do it in this way…

this is the code

``````// 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];

validateCred=array=>{

let newArray = [];

console.log(array);

array.pop();

newArray = array.reverse();

console.log(newArray);

let sumReverse = 0;

for(let i = 0;i < newArray.length; i++){

let multiPosicion = 0;

//console.log(i+1);

if(i !=0 && i % 2 != 0){

//console.log(newArray[i]*2);

multiPosicion += newArray[i] * 2;

//console.log(multiPosicion);

//sumReverse += multiPosicion;

//console.log(sumReverse);

}

if(multiPosicion>9){

multiPosicion -= 9;

console.log(multiPosicion);

sumReverse += multiPosicion;

}else{

sumReverse += multiPosicion;

}

}

//console.log(sumReverse);

return sumReverse%10 ==0 ?  true: false;

};

function findInvalidCards(array){

const invalidCard = [];

for(let i= 0; i< array.length; i++){

let creditCard = array[i];

//console.log(creditCard);

if(validateCred(creditCard) === false ){

console.log(validateCred(creditCard));

invalidCard.push(array[i]);

}

}

return invalidCard;

};

//array.forEach(element=>console.log(element));

//console.log(array.reverse());

console.log(validateCred(valid1));

console.log(validateCred(invalid1));

console.log(findInvalidCards(invalid1));

and this is the error message...

/home/ccuser/workspace/credit-card-checker/main.js:32
array.pop();
^

TypeError: array.pop is not a function
at validateCred

Any help I aprecciate it...
Thank you``````

Hello! I think this question on StackExchange might be very useful. See if `.pop()` is really called on an array when you do

But well, when I log “console.log(validateCred(valid1));” , it works…
I don’t know if I have to change my code… but well I don´t understand why…

I think this project have a high level for persons like me that we are beggin…
I don’t understand the purpose to follow other codes so…
I feel disapointed

Sorry, I was reading your code incorrectly. I’ll get back to you.

The error is being thrown on this line:

`````` for(let i= 0; i< array.length; i++){

let creditCard = array[i];

//console.log(creditCard);

if(validateCred(creditCard) === false ){

console.log(validateCred(creditCard)); <--this line is throwing the error

invalidCard.push(array[i]);
``````

This is because you pass into the `findInvalidCards` function the `invalid1` array. Which means that the loop is actually iterating through this array:

And so when you call `validateCred` within the loop, you’re actually calling it on each number within the `invalid1` array. And you can’t call `.pop()` on an integer.

I hope this helps!

Thank you very much…
I apreciate a lot your help…

1 Like