0

这对我来说其实很奇怪。我不知道如何动态创建多维数组。我想创建一个三级下拉列表,所以我想我需要一个三维数组来存储值。如何创建三维数组?

<script language=javascript>

var aCourse=new Array();
aCourse[0]=new Array();
aCourse[1]=new Array();
aCourse[2]=new Array();
aCourse[3]=new Array();

aCourse[0][0]="Select...";
aCourse[1][0]="Select...";
aCourse[1][1]="T Square";
aCourse[1][2]="V Square";
aCourse[1][3]="S Square";
aCourse[1][4]="B Square";
aCourse[1][5]="G Square";
aCourse[2][0]="Select...";
aCourse[2][1]="N Square";
aCourse[2][2]="W Square";
aCourse[3][0]="Select…";
aCourse[3][1]="J Square";
aCourse[3][2]="M Square";

function ChangeCourse()
{
var i,
iCategoryIndex;
iCategoryIndex=document.frm.optCategory.selectedIndex;
iCourseCount=0;
while (aCourse[iCategoryIndex][iCourseCount]!=null)
iCourseCount++;
document.frm.optCourse.length=iCourseCount;
for (i=0;i<=iCourseCount-1;i++)
document.frm.optCourse[i]=new Option(aCourse[iCategoryIndex][i]);
document.frm.optCourse.focus();
}

</script>
<body ONfocus=ChangeCourse()>
<h3>Choose category…&lt;/h3>
<form name="frm">
<p>Category:
<select name="optCategory" size="1" onChange=ChangeCourse()>
<option>Select…&lt;/option>
<option>Soccer</option>
<option>Cricket</option>
<option>Rugby</option>
</select>
</p>
<p>Fields
<select name="optCourse" size="1">
<option>Select…&lt;/option>
</select>
</p>
</form>
4

2 回答 2

1

如果您唯一的问题是创建 3 维数组,这应该可行:

var aCourse = [];

for(var i = 0; i < dimensionOneSize; i++) {
  aCourse[i] = [];
  for(var k = 0; k < dimensionTwoSize; k++)
    aCourse[i][k] = [];
}

值得注意的是,JavaScript 支持使用方括号的数组的简写定义[],因此您可以使用它们来使动态定义更清晰。

可能更短

另外,我不确定这是否效果很好,但它可能:

var aCourse = [[[]]];

到目前为止,我的测试还没有证明可以使用它,但它确实可以作为正确的脚本进行验证。

于 2012-07-02T01:03:55.600 回答
0

首先,使用方括号初始化数组总是好的,[]

var aCourse = [];

并且要在 JS 中模拟多维数组,这本质上是单个数组中的不确定数量的数组,请执行以下操作:

aCourse[0] = [];

或者,您可以在创建数组时在方括号内创建数组:

var aCourse = [
    [], [], []
];

这相当于:

aCourse[0] = [];
aCourse[1] = [];
aCourse[2] = [];
于 2012-07-02T01:00:29.400 回答