如何在 map 方法中使用 reduce 方法来添加数字

How to use reduce method within map method to add numbers

不确定我是否将事情过于复杂化,但我正在尝试获取此数组数组中所有数字的总和:

const frames = [
  [2, 0], [4, 2], [6, 0], [2, 4], [1, 5], [7, 0], [5, 2], [7, 0], [2, 6], [8, 1]
]

我正在练习使用 mapreduce 这样做:

const score = (frames) =>{
  console.log(frames)
  let addedScores = frames.map(frame.reduce((previousValue, currentValue) => previousValue + currentValue))
  console.log(addedScores)
}

但目前出现此错误:

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)

Here is a fiddle version.

任何建议和解释将不胜感激

你快完成了!如果您查看所面临错误的堆栈跟踪,您将看到 Array.map 函数抛出错误,即“东西”(即 2,04,26,02,41,57,05,27,02,68,1)“不是函数” .

map higher-order 函数需要一个函数,它将映射到 frames.

的元素

你想要的是这样的:


//...
  let addedScores = frames.map((frame) => frame.reduce((previousValue, currentValue) => previousValue + currentValue))
//...


这里我只转换了你的 addedScores 表达式来传递一个匿名函数:(frame) => { ... }map 函数。

希望对您有所帮助!

addedScores 的结果形状为:[2, 6, 6, 6, 6, 7, ...],这是 frames.

中每对数字的总和