为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript - 数组中的分数总和

Javascript - 数组中的分数总和

喵喵时光机 2023-02-24 17:39:30
我对 javascript 比较陌生,并试图对以下数组中的所有分数求和:[  { tile: "N", score: 1 },  { tile: "K", score: 5 },  { tile: "Z", score: 10 },  { tile: "X", score: 8 },  { tile: "D", score: 2 },  { tile: "A", score: 1 },  { tile: "E", score: 1 }]我试过使用这个功能:function maximumScore(tileHand) {        return tileHand.reduce((p,c) => p.score + c.score, 0);    }但我得到的结果不是NaN28。但是,当我用 替换p.score我的函数时p,我得到了 28 的预期结果。为什么会这样?
查看完整描述

4 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

reduce 的第一个参数是累加器。因此,将值添加到其中。所以它基本上是一个变量。

function maximumScore(tileHand) { 
   return tileHand.reduce((p,c) => p + c.score, 0);
}

这将继续向 p 添加分数,从 0 开始

另见mozilla.org


查看完整回答
反对 回复 2023-02-24
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

原因是.reduce()您使用的方法的回调最多需要 4 个参数,第一个是accumulator。这意味着它保存了回调返回的所有先前结果的累加值。在这种情况下,它是一个数字,而不是一个对象。因此,在每次迭代中,您在参数下都有当前总和p,而不是对象。

从文档:

accumulator

累加器累加回调的返回值。它是先前在回调的最后一次调用中返回的累积值——或者initialValue,如果它被提供(见下文)。


查看完整回答
反对 回复 2023-02-24
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

// get sum of score prop across all objects in array i.e. tileHand

var scoreTotal = tileHand.reduce(function(prev, cur) {

  return prev + cur. score;

}, 0);


console.log('Total Score:', scoreTotal);

参考:https://gist.github.com/benwells/0111163b3cccfad0804d994c70de7aa1


查看完整回答
反对 回复 2023-02-24
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

p 代表前一个(或累加器/总和),c 代表当前。您正在将以前的分数与当前分数相加。然后告诉 reduce 函数从 0 开始

所以它试图求和 0.score + c.score 这将给出 NaN。

只需做 p + c.score

所以循环将是

0 + 1 = 1

1 + 5 = 6

6 + 10 = 16

ETC


查看完整回答
反对 回复 2023-02-24
  • 4 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信