2012-05-21 44 views
0

我需要经常添加一个2维数组。 ideea是我有一个生成的二维数组,我必须得到所有生成的数组的总和。 我试着写:JavaScript中的二维数组求和

sum+=parseFloat(twoArray[a][b]); 

但脚本被阻止,我什么也得不到。它是一个循环,因此a,b的值从0浮动到由用户插入的变量。我已经测试了脚本,这是它打破的路线。

if (k>=3){       
    for(var i=0;i<A.length;i++){ 
     var smaller=new Array(A.length-1); 
     for(var h=0;h<smaller.length;h++){ 
      smaller[h]=new Array(smaller.length); 
     } 
     for(var a=1;a<A.length;a++){ 
      for(var b=0;b<A.length;b++){ 
       if(b<i){ 
        smaller[a-1][b]=A[a][b]; 
       } 
       else if(b>i){ 
        smaller[a-1][b-1]=A[a][b]; 
       } 
      } 
     } 
     sum+=parseFloat(smaller[a][b]); 
     alert (sum); 
     //dam valorile 
    } 
} 
} 
+1

您可以添加示例输入脚本的其他部分 – ManseUK

+0

这是一个非常长的脚本。 ideea是我有一个k行k列的二维数组A,我生成了一行一列的数组。我想将所有结果数组添加到k-1行和k-1列的总和中。 – viktor

+0

很明显(在重新缩进之后)你的数组'smaller'在'[a] [b]'没有项目,因为它的长度只有'a-1'。您能否在“脚本中断”时发布您收到的错误消息? – Bergi

回答

1

将一个

try { 
    sum+=parseFloat(twoArray[a][b]); 
} catch (e) { 
    console.log(e) 
} 

在循环。

所以你会看到它被封锁和无效的投入不会阻止剩余的总和。

当然,我想你正确地检查了数组索引与之前的长度。

+0

我已经添加了循环代码。我已经使用alert检查了生成的数组,并且它一切正常,但是这是产生问题的总和。 – viktor

+0

你有没有尝试我建议检查的东西没有例外? –

+0

我已经检查过生成的数组,它们和它们应该是一样的。问题应该在语法上小一些[a] [b];如果我只使用较小的工作,但它只需要所有数组的第一个值。 – viktor