我正在尝试将Java代码转换为Javascript,并试图将数据分配给3维数组,并且出现“ TypeError:无法将未定义的对象转换为对象”错误。以下是我的代码。在此先感谢您的帮助。

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;
}

最佳答案

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



那不是尺寸的声明,是四个array literals。 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
        }
    }
}


或者,应用您的loop unrolling

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];
}

10-08 08:38