I’m working on this project and have a lot of the work done but am stuck at pushing some array numbers into a new array.
I’ve probably done this in a very cumbersome way but it’s how I’ve worked it out logically stage by stage.
The task:
Create a function, validateCred()
that has a parameter of an array. The purpose of validateCred()
is to return true
when an array contains digits of a valid credit card number and false
when it is invalid. This function should NOT mutate the values of the original array.
To find out if a credit card number is valid or not, use the Luhn algorithm. Generally speaking, an algorithm is a series of steps that solve a problem — the Luhn algorithm is a series of mathematical calculations used to validate certain identification numbers, e.g. credit card numbers.
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];
// Add your functions below:
const validateCred = arr => {
let reverseArray = ;
let toBeSummed = ;
for(let i = arr.length - 2; i >= 0; i–) {
const valueAtIndex = arr[i]
reverseArray.push(valueAtIndex)
} console.log('Reversed array: ’ + reverseArray);
let odds = reverseArray.filter((num) => num % 2 === 1);
console.log('Odds array: ’ + odds);
let evens = reverseArray.filter((num) => num % 2 === 0);
console.log('Evens array: ’ + evens);
toBeSummed.push(evens);
function duplicate(arr) {
let numDouble = […arr];
for (let i = 0; i < arr.length; i++) {
numDouble[i] = numDouble[i] * 2;
}
return numDouble;
}
//const arr = [1, 2, 3, 4]
const multiples = duplicate(odds)
console.log('Multiples: ’ + multiples)
let aboveNine = multiples.filter(largerNumber => {
return largerNumber > 9;
})
console.log('Numbers above 9: ’ + aboveNine);
function minusThese(arr) {
let minusNineArr = […arr];
for (let i = 0; i < arr.length; i++) {
minusNineArr[i] = minusNineArr[i] - 9;
}
return minusNineArr;
}
const minusNineNumbers = minusThese(aboveNine)
console.log('Minus 9 numbers: ’ + minusNineNumbers);
for (let i = 0; i < multiples.length; i++){
for (let j = 0; j < aboveNine.length; j++){
if (multiples[i] !== aboveNine[j]){
toBeSummed.push(multiples[i]);
}
}
}
console.log('toBeSummed Array: ’ + toBeSummed);
}
// [19, 5 , 9, 13]
validateCred(valid1);
The final nested for loop is the part where I’m stuck. I want to add numbers from the ‘multiples’ array that do not equal the numbers in ‘aboveNine’ array, to the ‘toBeSummed’ array, but that part doesn’t seem to work.
thanks for any help
S