Javascript:将数据分配给多维数组

时间:2013-08-06 16:04:02

标签: javascript arrays

我正在尝试将Java代码转换为Javascript,并且我正在尝试将数据分配给3维数组,并且我得到“TypeError:无法将undefined转换为对象”错误。以下是我的代码。提前感谢您的帮助。

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 个答案:

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

答案 1 :(得分:0)

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

要初始化列表(或数组),您必须执行

var initData = [];

然后在initData中存储另一个列表,比如initData[0] = []等等......就像它提到的那样,javascript中的数组/列表没有用限制大小进行初始化。