当前位置:  开发笔记 > 编程语言 > 正文

为什么reduceRight在Javascript中返回NaN?

如何解决《为什么reduceRight在Javascript中返回NaN?》经验,为你挑选了1个好方法。

我正在使用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上阅读了文档,但显然我无法在我的详细信息数组中总结所有得分值.为什么?



1> sepp2k..:

赋予函数的第一个参数是累计值.所以第一次调用函数看起来就像f(0, {score: 1}).所以当做x.score时,你实际上做的是0.score当然不起作用.换句话说,你想要的x + y.score.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有