For循环错误,For循环没有正确填充数组

for loop error, for loop is not populating my array properly

本文关键字:For 循环 数组 填充 错误      更新时间:2023-09-26

我正在用javascript做回归分析。我试图获得ui(误差值)从股票价格使用回归线。我的回归线在一个叫做line的数组中。我的代码如下…

function getUi(n, data, line){
var u = new Array(n);
for(j=0; j<n; j++){
    u[j] = parseInt(data['quote'][j]['Adj_Close']) - line[j];
}
return u;

其中n是我的回归的长度,data是雅虎财经给我的数组,line是,正如我之前提到的,是我的回归线。到目前为止,我已经使用了相同的过程来完成基本上所有的计算(一个for循环来填充一个数组,然后返回数组),它们都工作得很好,除了这个。如果我使用n=200,它将返回一个180的数组。如果使用n=100,它将返回一个88的数组。这种情况发生在n=50和n=30时,唯一正确的是n=15。最奇怪的部分是得到ui的平方,我使用以下代码…

function getuisq(n, ui){
var uisq = new Array(n);
for(j=0; j<n; j++){
    uisq[j] = ui[j] * ui[j];
}
return uisq;

,它工作得很好。它使用未完全填充的ui数组,但它返回一个具有适当值的正确数组(如果n=100, uisq[89]的值将为ui[89]*ui[89],但我返回的数组没有ui[89]的值)。我试了很多方法,但似乎都不管用。如果你能帮忙,我将不胜感激。

我不明白你为什么需要n.试试改成

function getUi(data, line){
var u = new Array(line.length);
for(var j=0; j<line.length; j++){
u[j] = parseInt(data['quote'][j]['Adj_Close']) - line[j];
}
 return u;
}
function getuisq(ui){
var uisq = new Array(ui.length);
for(var j=0; j<ui.length; j++){
uisq[j] = ui[j] * ui[j];
}
return uisq;
}