2014-09-25 39 views
2

这是我的问题,我正在编写一个游戏,我需要使用一个非常简单的数组,问题是我创建它,一切正常,并且下一行,整行的值在阵列改变,我不明白为什么,这里是我的代码:一个很奇怪的数组

var ciblesPossibles = new Array(); 

    for (var i = 0; i < 2; i++) { 
     for (var j = 0; j < 5; j++) { 
      ciblesPossibles[i,j] = 1 + portee(i, j, ID, pos, carte.effet.portee) + duBonCote(i, ID, carte.effet.ciblesLegales); 
     } 
     console.log('1/ ciblesPossibles['+i+',x] = ' + ciblesPossibles[i,0] + ciblesPossibles[i,1] + ciblesPossibles[i,2] + ciblesPossibles[i,3] + ciblesPossibles[i,4]); 
    } 


    for (i = 0; i < 2; i++) { 
     console.log('2/ ciblesPossibles['+i+',x] = ' + ciblesPossibles[i,0] + ciblesPossibles[i,1] + ciblesPossibles[i,2] + ciblesPossibles[i,3] + ciblesPossibles[i,4]); 
    } 

    var max = maxTab(ciblesPossibles); 

    for (i = 0; i < 2; i++) { 
     for (j = 0; j < 5; j++) { 
      ciblesPossibles[i,j] = Math.floor(ciblesPossibles[i,j]/max); 
      console.log(ciblesPossibles[i,j]); 
     } 
    } 

portee()和duBonCote()是两个函数返回只有1或0。 当我在控制台。 log('/ 1 ...'),我有类似33222和22211(这是我想要的),但是当我在console.log('/ 2 ...')时,我有22211和22211 ...什么可以使我的阵列中的第一行改变?

问候

回答

13

二维阵列作为a[i][j],不a[i,j]访问。

后者将被视为逗号运算符的使用,并且仅评估为a[j],即一维矩阵。

你会想要更多的东西一样:

var ciblesPossibles = []; // create array to hold rows - NB: not "new Array(): 
for (var i = 0; i < 2; i++) { 
    ciblesPossibles[i] = []; // create the individual row 
    for (var j = 0; j < 5; j++) { 
     ciblesPossibles[i][j] = ... 
    } 
} 
+0

我知道明白怎么阵列JavaScript的工作...谢谢您的回答! – Kahsius 2014-09-25 13:37:46