我正在使用Firefox 3.5.7并且在Firebug中我正在尝试测试array.reduceRight函数,它适用于简单的数组,但是当我尝试类似的东西时,我得到了一个NaN.为什么?
>>> var details = [{score : 1}, {score: 2}, {score: 3}]; >>> details [Object score=1, Object score=2, Object score=3] >>> details.reduceRight(function(x, y) {return x.score + y.score;}, 0) NaN
我也试过map,至少我可以看到每个元素的.score组件:
>>> details.map(function(x) {console.log (x.score);}) 1 2 3 [undefined, undefined, undefined]
我在https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight上阅读了文档,但显然我无法在我的详细信息数组中总结所有得分值.为什么?
赋予函数的第一个参数是累计值.所以第一次调用函数看起来就像f(0, {score: 1})
.所以当做x.score时,你实际上做的是0.score当然不起作用.换句话说,你想要的x + y.score
.