我正在尝试使用for循环将数组的维度添加到变量中。我有然后使用警报显示一个弹出框与值在它只是为了确保它正在工作,但弹出框说未定义,而不是我所期望的值。什么好主意吗?
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];
}
您没有正确创建数组,并且您的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];
}
注:可以将"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++)
记住数组索引是从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++)
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];
}
使用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++)
如果你想这样称呼它,你只有一个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];
}
这是您需要的jsfiddle
http://jsfiddle.net/LuQCD/它将求和逻辑抽象为一个函数,因此您可以传入2d数组的任何行,您想获得该行的和。