首页 > 解决方案 > 未捕获的类型错误:b 未定义。如何解决此类错误?

问题描述

我正在解决欧拉问题 48 并得出了解决方案-。基本上我试图计算将他们的数字存储在数组中的自我权力。该问题的链接是https://projecteuler.net/problem=48 但是我遇到了一个意外错误。显示的错误信息是Uncaught error b is undefined

function selfPower(n,b)
{
    var carry,i=1,j;
    b[0][n-1]=1;
    while(i<=n)
    {
        carry=0,j=0;
        while(b[j])
        {
            b[j][n-1]=b[j][n-1]*n+carry;
            carry= Math.floor(b[j][n-1]/10);
            b[j][n-1]%=10;
            j++;
        }
        while(carry>0){
            b[j][n-1]=carry;
            carry=Math.floor(b[j][n-1]/10);
            b[j][n-1]%=10;
            j++;
        }
        i++;
    }
}
var a=[][1000];
var str="";
for(i=1;i<=1000;i++){
    selfPower(i,a);
}
for(i=0;i<10;i++){
    for(j=1;j<1000;j++)
    a[i][0]+=a[i][j];

    a[i][0]+=carry;
    carry=Math.floor(a[i][0]/10);
    a[i][0]%=10;
    str=a[i][0]+str;
}
document.getElementById('output').textContent= str;

但是我在第 4 行遇到错误,Uncaught Typeerror: b is undefined. 我该如何解决这个问题?

标签: javascript

解决方案


它们是上述代码中数组初始化方式的缺陷

如果您希望能够像这样访问矩阵 matrix[i][j]

我发现在循环中初始化它最方便。

var matrix = [],
    cols = 3;

//init the grid matrix
for ( var i = 0; i < cols; i++ ) {
    matrix[i] = []; 
}

这会给你 [ [], [], [] ]

所以 matrix[0][0] matrix[1][0] 返回 undefined 而不是错误“Uncaught TypeError: Cannot set property '0' of undefined”

因此,如果您重写代码,它将是

var a=[]
var i,j;
for(i=1;i<=1000;i++){
    a[i-1]=[];
    a[i-1][0]=1;
    selfPower(i,a);
}

这将解决问题


推荐阅读