# How can I keep the return value of a function as a nested array?

I’m coding a program using the Luhn Algorithm to check for valid and invalid credit card numbers. These numbers are single arrays but you can batch them inside a nested array. What I’m trying to do is reverse their order, then save them inside an array called reversedNumbers (this is a nested array as well), after that I’ve tried to do the following but the result is not what I wanted since the return value is a single array not arrays nested inside an array.

CODE BELOW:
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 = arry => {
let reversedNumbers = ;
let newArray = ;
for (let i = 0; i < arry.length; i++) {
reversedNumbers.push(arry[i].slice().reverse());
}
//return console.log(reversedNumbers);

for (let j = 0; j < reversedNumbers.length; j++) {
for (let k = 0; k < reversedNumbers[j].length; k++) {
if (k % 2 !== 0) {
if ((reversedNumbers[j][k] * 2) > 9) {
newArray.push((reversedNumbers[j][k] * 2) - 9);
} else {
newArray.push(reversedNumbers[j][k]);
}
} else {
newArray.push(reversedNumbers[j][k]);
}
}
}
return console.log(newArray);
}
validateCred(batch);

Result is a single array of digits and not what I intended. I want to iterate over each nested array and get the return values nested inside an array called newArray as separate arrays.

Are you trying to return the array or make it show up on the screen/console?

The code above would always return `undefined` since `console.log()` does not return anything (it returns `undefined`).

This may help:

const arr1 = ['a', 'b', 'c']; const arr2 = ['d', 'e']; const batch = [arr1, arr2]; function reversedCopies(arr2d) { const newArray = []; for (let i = 0; i < arr2d.length; i++) { let reversed = arr2d[i].slice().reverse(); newArray.push(reversed); } return newArray; } console.log(reversedCopies(batch));

In order to make newArray a nested array, you’d have to use indices when pushing numbers to newArray:

``````for (let j = 0; j < reversedNumbers.length; j++) {
newArray.push([]); // newArray[j] starts as an  empty array
for (let k = 0; k < reversedNumbers[j].length; k++) {
if (k % 2 !== 0) {
if ((reversedNumbers[j][k] * 2) > 9) {
newArray[j].push((reversedNumbers[j][k] * 2) - 9);
} else {
newArray[j].push(reversedNumbers[j][k]);
}
} else {
newArray[j].push(reversedNumbers[j][k]);
}
}
``````