No estoy seguro si estoy complicando demasiado las cosas, pero estoy tratando de obtener la suma de todos los números dentro de esta matriz de matrices:
const frames = [ [2, 0], [4, 2], [6, 0], [2, 4], [1, 5], [7, 0], [5, 2], [7, 0], [2, 6], [8, 1] ] Estoy practicando usando map y reduce para hacerlo:
const score = (frames) =>{ console.log(frames) let addedScores = frames.map(frame.reduce((previousValue, currentValue) => previousValue + currentValue)) console.log(addedScores) }Pero actualmente recibe este error:
TypeError: 2,04,26,02,41,57,05,27,02,68,1 is not a function at Array.map (<anonymous>) at score (/Users/x/Desktop/Programming/devacademy/bootcamp/week1/preparation/bowling-kata/game.js:8:28) at Object.<anonymous> (/Users/x/Desktop/Programming/devacademy/bootcamp/week1/preparation/bowling-kata/game.js:17:1)Aquí hay una versión de violín.
Cualquier consejo y explicación sería muy apreciada.
¡Ya casi estás en esto! Si observa el seguimiento de la pila para el error al que se enfrenta, verá que la función Array.map arroja un error y, a saber, esas "cosas" (es decir 2,04,26,02,41,57,05,27,02,68,1 ) "no es una función".
La función de map de orden superior espera una función que mapeará a través de los elementos de los frames .
Lo que quieres es algo como esto:
//... let addedScores = frames.map((frame) => frame.reduce((previousValue, currentValue) => previousValue + currentValue)) //... Aquí solo he convertido su expresión addedScores para pasar una función anónima: (frame) => { ... } a la función de map .
¡Espero que esto ayude!
La forma resultante para addedScores sería: [2, 6, 6, 6, 6, 7, ...] , que es la suma de cada par de números en frames .