Me pregunto por qué recibo este mensaje de error. ¿Pero array.map es correcto en cómo lo digo?
/home/ccuser/workspace/credit-card-checker/main.js:40 newArr = array.map((elemento, índice) => índice % 2 === 1 ? elemento * 2 : elemento); ^
TypeError: array.map no es una función en validateCred
const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]; const validateCred = (array) => { let newArr = []; let newestArr = []; let reducedResult = 0; const reducer = (previousValue, currentValue) => previousValue + currentValue; if (array.length % 2 === 0) { newArr = array.map((element, index) => index % 2 === 0 ? element * 2 : element); } else { newArr = array.map((element, index) => index % 2 === 1 ? element * 2 : element); } newestArr = newArr.map((element) => element > 9 ? element - 9 : element); let sum = newestArr.reduce((prev, curr) => prev += curr); return sum % 10 === 0 }; const findInvalidCards = (nestedArray) => { let invalidArray = []; invalidArray = nestedArray.forEach((element) => validateCred(element) === false); return invalidArray; }; findInvalidCards(valid1);Se supone que valid1 es una matriz de matrices, así que aquí simplemente envuelvo otro conjunto de corchetes.
Además, forEach siempre devuelve undefined, así que lo cambié para usar map en su lugar.
const valid1 = [[4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]]; const validateCred = (array) => { let newArr = []; let newestArr = []; let reducedResult = 0; const reducer = (previousValue, currentValue) => previousValue + currentValue; if (array.length % 2 === 0) { newArr = array.map((element, index) => index % 2 === 0 ? element * 2 : element); } else { newArr = array.map((element, index) => index % 2 === 1 ? element * 2 : element); } newestArr = newArr.map((element) => element > 9 ? element - 9 : element); let sum = newestArr.reduce((prev, curr) => prev += curr); return sum % 10 === 0 }; const findInvalidCards = (nestedArray) => { let invalidArray = []; invalidArray = nestedArray.map((element) => ({cardNumber: element.join(""), isValid: validateCred(element)})); return invalidArray; }; console.log(findInvalidCards(valid1));