2

我正在尝试将 Java 代码转换为 Javascript,并且正在尝试将数据分配给 3 维数组,但出现“TypeError: can't convert undefined to object”错误。以下是我的代码。提前感谢您的帮助。

var initData = [[2], [12], [2]];

for (var i = 0; i < 12; i++)
{
    initData[0][i][0] = -1;
    initData[0][i][1] = -1;
    initData[1][i][0] = -1;
    initData[1][i][1] = -1;
}
4

2 回答 2

1
[[2], [12], [2]];

这不是维度的声明,而是四个数组文字。JS 中没有多维数组。它们只是可以包含任意值(包括其他列表)的一维列表。

要创建和填充包含其他数组的数组,您必须使用以下内容:

var initData = []; // an empty array
for (var i = 0; i < 2; i++) {
    initData[i] = []; // that is filled with arrays
    for (var j = 0; j < 12; j++) {
        initData[i][j] = []; // which are filled with arrays
        for (var k = 0; k < 2; k++) {
            initData[i][j][k] = -1; // which are filled with numbers
        }
    }
}

或者,应用你的循环展开

var initData = [[], []]; // an array consisting of two arrays
for (var i = 0; i < 12; i++) {
    // which each are filled with arrays that consist of two numbers
    initData[0][i] = [-1, -1];
    initData[1][i] = [-1, -1];
}
于 2013-08-06T16:12:19.917 回答
0

initData 是三个列表的列表,[2]、[12] 和 [2]。每一个都有一个元素。

为了初始化一个列表(或数组),你必须做

var initData = [];

然后在 initData 中存储另一个列表,initData[0] = []依此类推...就像提到的那样,javascript 中的数组/列表未使用限制大小进行初始化。

于 2013-08-06T16:08:42.150 回答