Javascript:可变宽度多维数组

时间:2018-10-23 15:14:26

标签: javascript multidimensional-array variable-length

我想创建一个宽度可变的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)这样的推入功能。

我从网络上看到的所有示例都具有相同大小的行/列。

2 个答案:

答案 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);