我正在尝试将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;
}
答案 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中的数组/列表没有用限制大小进行初始化。