Returning an empty Array

Why am i getting an empty array?

Note: I’ve been stuck with this problem for 48 hours

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

    const validateCred = array => {
        // variable declaration
        let poppedValue = [];
        // pop the last digit of the array
         poppedValue.push(array.pop());
    
        // reverse the array
        array.reverse();
        // Multiply the digits in oddPosition
        let multipliedArray = array.map((e, index) => index % 2 ===0 ? e * 2 : e);
        
        // subtruct 9 from values > 9
        multipliedArray = multipliedArray.map(e => e > 9 ? e - 9 : e);
        // add all the values in the array including the popped Array
        // first concat the array with the popped value
        multipliedArray = multipliedArray.concat(poppedValue);
        // Add all the values in the multiplied array
        multipliedArray = multipliedArray.reduce((accumulator, currentValue) => accumulator + currentValue);

        // check value % 10
        multipliedArray = multipliedArray % 10 === 0 ? 'Valid' : 'Invalid';
        
        return multipliedArray;
        
    }
    
   
    
    // create a function to loop through all cards
    let invalidCardsArray = [];
    const findInvalidCards = invalidCards => {
   
    for(let i = 0; i < invalidCards.length; i++){
       if(validateCred(invalidCards[i]) === true){
             invalidCardsArray.push(invalidCards[i]);
         }
     }
    
    return invalidCardsArray;
    
 }

 console.log(findInvalidCards(batch));

Output

What condition has to be met for a value to be added to the array? Is it ever met? You could add a few console.log() statements to see where things change from what’s expected. For example, you could start with logging the result of the condition in question here. Immediately before your if statement, add a call to console.log with the same condition you are checking. Is the value what you’re expecting?

1 Like

This topic was automatically closed 41 days after the last reply. New replies are no longer allowed.