Javascript 如果数组长度为1,则对数组的操作返回NaN Player.prototype.d2=函数(评级列表、rdList){ var tempSum=0; 对于(变量i=0;i

Javascript 如果数组长度为1,则对数组的操作返回NaN Player.prototype.d2=函数(评级列表、rdList){ var tempSum=0; 对于(变量i=0;i,javascript,functional-programming,Javascript,Functional Programming,这似乎是问题所在 除非ratingList,rdList和outcomeList只包含一个值,否则一切都似乎正常。然后,将stuff设置为NaN。我曾尝试将索引更改为-1,将比较更改为ratingList.length-1,甚至尝试使用递减的for循环,但如果数组只包含一个值,它似乎总是返回NaN 有没有办法(我肯定有——我想问题是如何)去掉for循环,用Array.map()或zip或这些函数的任何组合来代替它 在d2函数中,在循环中有这一行: tempSum += Math.pow(this

这似乎是问题所在

除非
ratingList
rdList
outcomeList
只包含一个值,否则一切都似乎正常。然后,将stuff设置为NaN。我曾尝试将索引更改为-1,将比较更改为
ratingList.length-1
,甚至尝试使用递减的
for
循环,但如果数组只包含一个值,它似乎总是返回NaN

有没有办法(我肯定有——我想问题是如何)去掉
for
循环,用
Array.map()
或zip或这些函数的任何组合来代替它


d2
函数中,在
循环中有这一行:

tempSum += Math.pow(this.g(rdList[1]), 2) * tempE * (1 - tempE);
因此,假设
rdList
至少有两个元素,但是
bob
只有一个元素


也许它必须是
rdList[i]

,而“只包含一个值”的意思是:
ratingList=[“OneValue”]
ratingList=“OneValue”
?是的,就是这样。可能需要rdList[i]谢谢!另一方面,现在我觉得自己很愚蠢,哈哈。如果有人知道如何用其他构造替换循环,我仍然很好奇。