我有一个名为student的对象,有两个属性,名称和分数.我正在尝试使用score属性执行计算,但是无法从学生阵列访问该属性.目前,我正在尝试使用以下代码获得分数的总和:
var sum = students.reduce(function(a, b) {
return {sum: a.score + b.score}
})
Run Code Online (Sandbox Code Playgroud)
这将返回一个未定义的值,并导致firefox中的显示怪异.我似乎无法找到错误.有没有办法简单地访问参数,即var myVar = myArray.myObject.myProperty; ?
Eth*_*own 10
我认为你不了解它是如何reduce运作的.对于数组中的每个元素,它执行提供的函数.第一个参数是"累加器"; 在访问每个元素时传递的东西(实际上,它是来自最后一个元素的函数的返回值,但它通常用作累加器).第二个参数是被访问的元素.所以我认为你想要的是:
var sum = students.reduce(function(a, s) {
a.sum += s.score;
return a;
}, { sum: 0 });
Run Code Online (Sandbox Code Playgroud)
当您调用时reduce,您可以提供累加器的初始值(否则它将采用第一个元素的值,并且访问从第二个元素开始).在这里,我们提供一个sum属性设置为零的对象.
如果你想要的只是总和(不是具有sum属性的对象),它可以更简单:
var sum = students.reduce(function(a, s) {
return a += s.score;
}, 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6839 次 |
| 最近记录: |