Method won't run

Does anyone understand why this particular line won’t run?

const reversedArray = array.reverse();

It throws this error:
TypeError: Cannot read property ‘reverse’ of undefined

I was under the impression that ‘reverse’ was a built-in method, am I wrong?

No, you are right. And the error is not complaining about the reverse method, but about the array you want to reverse. It doesn’t seem to exist. Where have you defined it?

I’m trying to use as part of a function, so i don’t want it set to a specific array. I need it to be able to access any array when i call the function
This is what I’ve got:

function luhnAlg(array){

const reversedArray = array.reverse();

Yes, looks ok. How do you call your function?

Like this:
luhnAlg();

console.log(luhnAlg(valid1));

Also ok. Are you sure that valid1 is an array?
Because this runs fine:

function luhnAlg(array){

const reversedArray = array.reverse();
return reversedArray
}
console.log(luhnAlg([1,2,3])) // logs [3, 2, 1]

It is, but could the problem be that valid1 is contained within another array?
Because technically, i should be calling this function on another array called batch that contains valid1 along with a few other arrays.

If you pass in a nested array, the result would not be the expected, but it would not throw an error. Is there a variable called valid1 that is accessible to the function call?

This is what I’ve been trying to use. I would think it could call it
const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8];

Also ok. Is it defined before or after your function call?

It is defined before the call. It’s defined before the function itself.

Then I don’t have any ideas. Can you post all of your code?
Please make sure to format it.

I can’t make any promises on the formatting, but I’ll try.

// 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 functions here

function luhnAlg(array){

const reversedArray = array.reverse();

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

  array.filter(i => i % 2);

  if(i > 9){

    let difference = i - 9;

    return difference;

  } else {

    return i;

  };

      l = i;

  let j = l + i;

  if( j % 10 === 0){

    console.log('valid');

    return true;

  } else{

    console.log('invalid');

    return false;

    };

  };

}

luhnAlg();

console.log(luhnAlg(valid1));

You call the function without an argument. That’s why array is undefined.

1 Like

Again, I’m really sorry about the lack of formatting, but thanks for pointing that out! And thank you for all the help.

1 Like