我想创建一个宽度可变的2D数组。我知道行数后就初始化了外部数组。
var listofcities = new Array(lengthofcites); //i get this lengthofcitles from another routine
现在,我将从另一个例程中获取城市中的设施列表。例如。 listoffacilities = ["water","air"]
代表城市。对于另一个城市,我将以listoffacilities = ["water","air","electricity"]
的形式获得此列表。
我应该能够以这样的方式将其存储在我的外部数组中
listofcities[0] = ["water","air"]
listofcities[1] = ["water","air","electricity"]
我无法在内部循环中使用像listofcities[0].push(listoffacilities)
这样的推入功能。
我从网络上看到的所有示例都具有相同大小的行/列。
答案 0 :(得分:2)
JavaScript没有多维数组;它具有数组的数组。因此,多维数组本质上是<锯齿状的(这是指并非所有从属数组都具有相同长度的术语)。
您可以按照显示的方式进行操作:
var listofcities = []; // No need to pre-allocate length
listofcities[0] = ["water","air"];
listofcities[1] = ["water","air","electricity"];
console.log(listofcities);
.as-console-wrapper {
max-height: 100% !important;
}
此:
var listofcities = [];
创建一个空的外部数组,然后创建这些:
listofcities[0] = ["water","air"];
listofcities[1] = ["water","air","electricity"];
创建从属数组(例如["water","air"]
)并将其存储在该外部数组中。 [...]
是一个数组初始化器(通常称为“数组文字”),它创建一个在方括号之间包含项目的数组。
下面是使用push
的示例;请注意,您在数组(push
)上调用listofcities.push(...)
,而不是在该数组(listofcities[0].push(...)
)中的 entry 。但是,一旦将下级数组作为条目放入,您就可以 push
到该下级数组(listofcities[0].push(...)
)。
var listofcities = []; // No need to pre-allocate length
listofcities.push(["water","air"]);
listofcities.push(["water","air","electricity"]);
console.log(listofcities);
.as-console-wrapper {
max-height: 100% !important;
}
答案 1 :(得分:0)
您不应该推送到listofcities
的特定元素上,只需推送到数组本身即可:
var listofcities = []; // don't specify the length here
listoffacilities = ["water", "air"];
listofcities.push(listoffacilities);
listoffacilities = ["water","air","electricity"];
listofcities.push(listoffacilities);
console.log(listofcities);