为什么这个javascript代码不起作用?

为什么这个javascript代码不起作用?,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我正在尝试将00分配给arrayi[0][0],将62分配给arrayi[6][2]等等。。然后显示[0][9],[1][8]…您的第六行有i+o,其中i和o是数字,将作为数字添加。0+0=0,6+2=8。要连接字符串,需要将数字转换为字符串。最简单的方法是添加一个空字符串;arrayi[i][o]=i++o您的第六行有i+o,其中i和o是数字,将作为数字添加。0+0=0,6+2=8。要连接字符串,需要将数字转换为字符串。最简单的方法是添加一个空字符串;arrayi[i][o]=i++o运行该代

我正在尝试将00分配给arrayi[0][0],将62分配给arrayi[6][2]等等。。然后显示[0][9],[1][8]…

您的第六行有i+o,其中i和o是数字,将作为数字添加。0+0=0,6+2=8。要连接字符串,需要将数字转换为字符串。最简单的方法是添加一个空字符串;arrayi[i][o]=i++o

您的第六行有i+o,其中i和o是数字,将作为数字添加。0+0=0,6+2=8。要连接字符串,需要将数字转换为字符串。最简单的方法是添加一个空字符串;arrayi[i][o]=i++o

运行该代码时,会得到错误引用error:arrayi未定义

在将另一项分配给它之前,需要将arrayi[i]设置为数组。我建议在可能的情况下使用push来设置数组元素

这个代码怎么样:

var arrayi = new Array();
for (var i=0; i<=9; i++)
{
    for (var o=0; o<=9; o++)
    {
        arrayi[i][o]=i + "" + o;
    }
}
for (var i = 0, j = 9; i <= 9; i++, j--)  
  document.write("arrayi[" + i + "][" + j + "]= " + arrayi[i][j]);
这就是你想要的,对吗


一个额外的小费;我建议使用var array=[]而不是JavaScript中的新数组。

当您运行该代码时,您会得到错误ReferenceError:arrayi未定义

在将另一项分配给它之前,需要将arrayi[i]设置为数组。我建议在可能的情况下使用push来设置数组元素

这个代码怎么样:

var arrayi = new Array();
for (var i=0; i<=9; i++)
{
    for (var o=0; o<=9; o++)
    {
        arrayi[i][o]=i + "" + o;
    }
}
for (var i = 0, j = 9; i <= 9; i++, j--)  
  document.write("arrayi[" + i + "][" + j + "]= " + arrayi[i][j]);
这就是你想要的,对吗

一个额外的小费;我建议使用var数组=[]而不是JavaScript中的新数组。

document.writearrayi[+I+][+j+]=+a[I][j]

调用a而不是arrayi

文档。writearrayi[+i+][+j+]=+a[i][j]


您可以调用a而不是arrayi,JavaScript中的数组是一维的

所以arrayi[0]是未定义的,然后arrayi[0][0]变成未定义的[0],这显然不起作用

您需要通过将数组分配给arrayi的索引来创建二维数组,分配的实际值也有一个错误:

arrayi[0][9]= 09
arrayi[1][8]= 18
arrayi[2][7]= 27
arrayi[3][6]= 36
arrayi[4][5]= 45
arrayi[5][4]= 54
arrayi[6][3]= 63
arrayi[7][2]= 72
arrayi[8][1]= 81
arrayi[9][0]= 90
所以JS正在修复你的代码。。。错误的方式:

更新

我不太清楚你到底想做什么,如果你想把一个数字拆分成小数点,然后分配给它,那么你首先要确保你的数组足够大,然后你必须拆分这个数字:

return  // js will insert a semi colon here, so this will return undefined
{ // no syntax errors, gets parsed as a block, even though there is block scope in JS
    foo: 2 // parsed as a label... single expression evaluation then makes the 2 work
} // another semi colon gets inserted here

JavaScript中的数组是一维的

所以arrayi[0]是未定义的,然后arrayi[0][0]变成未定义的[0],这显然不起作用

您需要通过将数组分配给arrayi的索引来创建二维数组,分配的实际值也有一个错误:

arrayi[0][9]= 09
arrayi[1][8]= 18
arrayi[2][7]= 27
arrayi[3][6]= 36
arrayi[4][5]= 45
arrayi[5][4]= 54
arrayi[6][3]= 63
arrayi[7][2]= 72
arrayi[8][1]= 81
arrayi[9][0]= 90
所以JS正在修复你的代码。。。错误的方式:

更新

我不太清楚你到底想做什么,如果你想把一个数字拆分成小数点,然后分配给它,那么你首先要确保你的数组足够大,然后你必须拆分这个数字:

return  // js will insert a semi colon here, so this will return undefined
{ // no syntax errors, gets parsed as a block, even though there is block scope in JS
    foo: 2 // parsed as a label... single expression evaluation then makes the 2 work
} // another semi colon gets inserted here
改变这个,

var i = 62;
var s = (i).toString(); // convert the number 62 to a string
s = i < 10 ? '0' + i : s; // make sure that "9" will become "09"
var p = s.split(''); // ["6", "2"];
arrayi[+p[0]][+p[1]] = i; // assign the value, + will convert the strings to a number without the horrible parseInt

改变这个,

var i = 62;
var s = (i).toString(); // convert the number 62 to a string
s = i < 10 ? '0' + i : s; // make sure that "9" will become "09"
var p = s.split(''); // ["6", "2"];
arrayi[+p[0]][+p[1]] = i; // assign the value, + will convert the strings to a number without the horrible parseInt

试试

arrayi[i][o]= i + "" + o;

试试

arrayi[i][o]= i + "" + o;


若要以数字形式分配,您需要:

arrayi[i][o]=String(i) + String(o);

若要以数字形式分配,您需要:

arrayi[i][o]=String(i) + String(o);

我猜你的目标是这样的:

arrayi[i][o] = (i*10)+o;

我猜你的目标是这样的:

arrayi[i][o] = (i*10)+o;

怎么了?有一件事,恐怕i+o不会给你正确的号码,你可能想试试i++o。虽然你真的应该使用parseInti+ParseInto,但应该注意的是document.write非常邪恶,通常不推荐使用。也许这里只是作为示例代码。有什么错误?有一件事,恐怕i+o不会给你正确的号码,你可能想试试i++o。虽然你真的应该使用parseInti+ParseInto,但应该注意的是document.write非常邪恶,通常不推荐使用。也许这里只是作为示例代码……即使JS中没有块,javascript中也有块。只是不要阻塞范围。除了带有let的Mozilla。@patrick是的,这就是我的意思,很抱歉混淆了,现在已经晚了。我要修复它…即使JS中没有块,javascript中也有块。只是不要阻塞范围。除了带let的Mozilla。@patrick是的,这就是我的意思,很抱歉搞混了,现在已经很晚了,要解决这个问题你说得对。它在没有10个参数的情况下工作。您忘了初始化数组的arrayi[i]行。您是对的。它在没有10个参数的情况下工作。您忘了初始化数组的arrayi[i]行。