JavaScript中有关多维数组的问题
偶然在别人的空间里看见了一个杨辉三角,也想试试。
杨辉三角长得这样:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
于是我用js写了个小程序:
var a=[[]];
var n = 7;
for (var i = 0; i < n; i++) {
for (var j = 0; j <= i; j++) {
if ((i - 1 >= 0) && (j - 1 >= 0) && (i != j)) {
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
} else {
a[i][j] = 1;
}
}
}
alert(a);
这样运行会报错!
可是我找不到问题出在哪里?
然后请教我师傅,他跟我的思路不一样:如果输出的形状如上面所示,他会把每一行当做一个数组,然后把所有的行都push到一个数组里面。
我的想法:就一个数组a,i代表行,j代表列,a[i][j]表示i行j列这个位置的值。
但是事实证明我错了,虽然我定义了a=[[]]表示二维数组,但是不识别,默认只当做是一维的。
修改后代码如下:
var a = [];
var n = 6;
for (var i = 0; i < n; i++) {
var b = [];
for (var j = 0; j <= i; j++) {
if ((i - 1 >= 0) && (j - 1 >= 0) && (i != j)) {
b[j] = a[i - 1][j - 1] + a[i - 1][j];
} else {
b[j] = 1;
}
}
a.push(b);
}
alert(a);
这样总算可以了。

浙公网安备 33010602011771号