在Javascript中对Integer数组执行计算

时间:2011-11-01 14:12:46

标签: javascript arrays loops multidimensional-array

我正在尝试使用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];
}

6 个答案:

答案 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)

这是一个可以做你需要的事情。

http://jsfiddle.net/LuQCD/

它将您的求和逻辑抽象为一个函数,这样您就可以传入要获取该行总和的2d数组的任何行。