一个非常奇怪的阵列

时间:2014-09-25 13:12:40

标签: javascript arrays

这是我的问题,我编写了一个游戏,我需要使用一个非常简单的数组,问题是我创建了它,一切都还可以,下一行是一个值,阵列中的整行改变了,我不明白为什么,这是我的代码:

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的函数。 当我在console.log(&#39; / 1 ...&#39;)时,我有类似33222和22211(这就是我想要的东西),但当我&#39时; m在console.log(&#39; / 2 ...&#39;),我有22211和22211 ......什么可以让我的数组中的第一行更改?

此致

1 个答案:

答案 0 :(得分: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] = ...
    }
}