我正在尝试使用for循环将数组的维度添加到变量中。然后我使用alert来显示一个弹出框,其中包含一个值,只是为了确保它正常工作,但弹出框显示undefined而不是我期望的值。有任何想法吗?
var actor = new Array [
[20,30,10,30,10],
[10,20,40,30,0],
[10,10,20,40,20]]
var n1 = 0;
for (var i = 0; i < 6; i++)
{
n1 = n1 + actor[0][i];
}
答案 0 :(得分:2)
您没有正确创建数组,并且for
循环超出范围。
这是它应该是什么样子。
var actor = [
[20,30,10,30,10],
[10,20,40,30,0],
[10,10,20,40,20]
]
var n1 = 0;
for (var i = 0; i < 5; i++)
{
n1 = n1 + actor[0][i];
}
P.S。您可以将n1 = n1 + actor[0][i];
更改为n1 += actor[0][i];
。
您也可以考虑将for (var i = 0; i < 5; i++)
更改为for (var i = 0; i < actor[0].length; i++)
答案 1 :(得分:0)
记住数组指标是从0开始的。数组actor[0]
有5个元素(0
- 4
),但您迭代超过6(0
- 5
)。
当您尝试将actor[0][5]
- undefined
- 添加到n1
时,它会变为NaN
,因为您无法将undefined
添加到length
号。
不使用硬编码数组长度,而是使用其for (var i = 0; i < actor[0].length; i++)
属性:
{{1}}
答案 2 :(得分:0)
i < 6
应为i < 5
。你的Array构造函数也是错误的。
尝试:
var actor = [[20,30,10,30,10],
[10,20,40,30,0],
[10,10,20,40,20]];
var n1 = 0;
for (var i = 0; i < 5; i++) {
n1 += actor[0][i];
}
答案 3 :(得分:0)
使用Array
构造函数时,使用括号:
var actor = new Array( ... );
您也可以使用外部数组的文字数组语法,就像使用内部数组一样:
var actor = [ ... ];
您正在数组外循环。由于数组有五个项目,你应该从0循环到4:
for (var i = 0; i < 5; i++)
当您使用这种形式的循环时,即从0开始并使用<
运算符,您可以看到与之比较的数字作为循环的长度。由于您有5个项目,因此您需要进行比较i < 5
。
您还可以在循环条件中使用数组的长度:
for (var i = 0; i < actor[0].length; i++)
答案 4 :(得分:0)
您只有一个3 x 5
矩阵,如果您想这样做,那么您就超出了维数。
尝试动态并将6
替换为真正寻找的值:
var actor = new Array [
[20,30,10,30,10],
[10,20,40,30,0],
[10,10,20,40,20]]
var n1 = 0;
for (var i = 0; i < actor[0].length; i++)
{
n1 += actor[0][i];
}
答案 5 :(得分:0)