我一定在做蠢事。数组newArea需要汇总所有区域的数据,即是全局数据。区域由变量p表示。但是当我尝试让newArea数组添加到自身中时,例如newArea [p] + = otherArray,它输出NaNs。甚至newArea [p] + = 1也会输出NaNs。
谁能发现我在做什么错?这让我发疯了,我正在努力到最后期限。
mm=0
var maxVolume = 0;
var tempCAGR = 0;
var maxCAGR = 0;
var newArray = [];
var newRegions = [];
var newConsValues = [];
var newArea = [];
for (var p=0; p<arrayRef[mm].length; p++) {//9 regions
newArray[p] = [];
for (var q=0; q<arrayRef[mm][p].length; q++) {//4 scenarios
newArea[q] = [];
if (q==0) {
newRegions.push(arrayRef[mm][p][q][0]);
newConsValues.push(arrayRef[mm][p][q][1]);
}
for (var r=0; r<dates.length; r++) {//time
//console.log('p: '+p+', q: '+q+', r: '+r);
if (p==0) {
newArea[q][r] = 1;
} else {
newArea[q][r] += 1;
}
}
arrayRef[mm][p][q].shift();
tempCAGR = Math.pow(( arrayRef[mm][p][q][len] / arrayRef[mm][p][q][1] ),(1/len))-1;
//console.log(newRegions[p]+', num: '+arrayRef[mm][p][q][len-1]+', denom: '+arrayRef[mm][p][q][0]+', len: '+len+', cagr: '+tempCAGR);
newArray[p][q] = tempCAGR;
maxCAGR = Math.max(maxCAGR,tempCAGR);
}
}
console.log(newArea);
最佳答案
您每次循环遍历newArea中的array
时:
...loop q ...
newArea[q] = []; // <-- resets the array at q pos
... loop r ...
if (p==0) {
newArea[q][r] = 1;
} else {
newArea[q][r] += 1;
}
因此,当
p === 0
时,它将填充q
数组中newArea
位置的数组。但是,p
的下一次迭代将清除它们,因此没有什么可累加的。您可能想保留旧的阵列,或者如果没有一个则创建一个新的阵列。
newArea[q] = newArea[q] || [];