Player.prototype.d2 = function(ratingList, rdList) {
var tempSum = 0;
for (var i = 0; i < ratingList.length; i++) {
var tempE = this.e(ratingList[i], rdList[i]);
tempSum += Math.pow(this.g(rdList[1]), 2) * tempE * (1 - tempE);
}
return 1 / Math.pow(q, 2) * tempSum;
};
Кажется, это бит, о котором идет речь.
Все выглядит хорошо, если только ratingList
, rdList
и outcomeList
не содержат только одно значение. Затем вместо этого устанавливается NaN. Я попытался изменить индекс на -1, изменив сравнение на ratingList.length - 1
, даже пробовал его с уменьшающимся циклом for
, но всегда кажется, что он возвращает NaN, если массивы содержат только одно значение.
Есть ли какой-либо способ (я уверен, что есть - я думаю, вопрос в том, как) покончить с циклом for
и заменить его на Array.map()
или zip или какой-либо композицией подобных функций?
Вы можете увидеть ВСЕ код здесь - это около 60 LOC