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]);
我正在尝试将00分配给arrayi [0] [0],62分配给arrayi [6] [2]等。然后显示[0] [9],[1] [8] ......
答案 0 :(得分:7)
JavaScript中的数组是一维的。
因此arrayi[0]
为undefined
,然后arrayi[0][0]
变为undefined[0]
,显然无效。
您需要通过将数组分配给arrayi
的索引来创建二维数组,并且还会分配实际值的错误:
var arrayi = []; // [] is the favored shorthand of new Array()
for (var i=0; i<=9; i++) { // always place { on the same line,
// automatic semi colon insertion can screw you up in JavaScript
arrayi[i] = []; // assign a new empty array
for (var o=0; o<=9; o++) {
arrayi[i][o]= i + '' + o; // i and o are both numbers so you will assign their sum
// need to convert them to strings in order to concatenate them
}
}
关于自动分号插入搞砸了,请看一下:
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
所以JS正在修复你的代码......错误的方法:)
更新
我有点不清楚你想要做什么,如果你想将一个数字分成小数位然后分配,那么你首先要确保你的数组足够大然后你必须分开数字:
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
答案 1 :(得分:2)
你的第六行有i + o
,其中i和o是Numbers,它们将作为数字添加。 0 + 0 = 0
和6 + 2 = 8
。要连接字符串,您需要将数字转换为字符串。最简单的方法是添加一个空字符串; arrayi[i][o] = i + "" + o
答案 2 :(得分:2)
改变这一点,
arrayi[i][o]=i + o;
用;
arrayi[i][o]= i + "" + o;
答案 3 :(得分:2)
我猜你的目标是这样:
var arrayi = new Array(10);
for (var i=0; i<=9; i++)
{
arrayi[i] = new Array(10);
for (var o=0; o<=9; o++)
{
arrayi[i][o]=i + o;
}
}
for (var i = 0; i <= 9; i++)
for (var j = 0; j <= 9; j++)
document.write("arrayi[" + i + "][" + j + "]= " + arrayi[i][j] + "<br>");
答案 4 :(得分:1)
运行该代码时,会收到错误ReferenceError: arrayi is not defined
。
你需要在为其分配另一个项目之前设置arrayi [i],就像它是一个数组一样。我建议尽可能使用push
来设置数组元素。
这段代码怎么样:
var arrayi=[];for (var i=0; i<=9; i++)
{
arrayi.push([]);
for (var o=0; o<=9; o++)
{
arrayi[i].push([i +''+ o]);
}
}
for (var i = 0, j = 9; i <= 9; i++, j--){
console.log("arrayi[" + i + "][" + j + "]= " + arrayi[i][j]);
}
输出:
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
这就是你想要的,对吧?
一个额外的小费;我建议使用var array=[]
而不是JavaScript中的new Array()
。
答案 5 :(得分:1)
尝试
arrayi[i][o]=i * 10 + o;
或
arrayi[i][o]=String(i) + String(o);
答案 6 :(得分:1)
要以数字方式分配,您需要:
arrayi[i][o] = (i*10)+o;
答案 7 :(得分:0)
document.write("arrayi[" + i + "][" + j + "]= " + a[i][j]);
你叫一个而不是arrayi