大家帮看看这是怎么回事?
<script type="text/javascript">
var cityList=new Array();
cityList['河北省']=['邯郸市','石家庄市'];
cityList['河南省']=['郑州市','洛阳市'];
cityList['湖北省']=['武汉市','宜昌市'];
alert(cityList.length);
</script>
<script type="text/javascript">
var cityList=new Array();
cityList[0]=['邯郸市','石家庄市'];
cityList[1]=['郑州市','洛阳市'];
cityList[2]=['武汉市','宜昌市'];
alert(cityList.length);
</script>
</head>
//这种情况是最大数字,length=最大数字索引(2)+ 1=3
var c0=new Array();
c0[0]=['邯郸市','石家庄市'];
c0[1]=['郑州市','洛阳市'];
c0[2]=['武汉市','宜昌市'];
alert(c0.length);
//下面这种情况就属于最大数字字符串:数组在寻找最大数字索引的时候会先把所有非数字索引先尝试着转
//化为数字,然后再找最大索引。c1中对于非数字索引即字符串索引‘2’转换为数字之后是2,然后数组
//在0,1,2中找到最大数字索引为2,索引length=2+1=3。
var c1=new Array();
c1[0]=['邯郸市','石家庄市'];
c1[1]=['郑州市','洛阳市'];
c1['2']=['武汉市','宜昌市'];
alert(c1.length);
//下面属于混合的情况,但是长度的计算方法一样,先把非数字索引“new”和“5”转化为数字,‘new’
//很显然无法转化,但是“5”可以转化为5。然后在0,1,3,5中在找到最大数字5,所以length=5+1=6。
//对于没有赋值的数字索引如c2[2]则默认被赋值undefined。至于c2['new']则是给数组添加了一个名为new
//的属性(用alert(c2.new)来检测),而并没有被列在数组元素之列。其实,你的例子可以理解为是给
//数组添加了三个分别名为河北,河南,湖北的属性,而数组元素一个也没有添加,但是因为属性名不能是
//汉字字符串所以你这三个属性其实添加的也没有意义,无法读取。
var c2=new Array();
c2[0]=['邯郸市','石家庄市'];
c2[1]=['郑州市','洛阳市'];
c2[3]=['武汉市','宜昌市'];
c2['5']=['x市','xx市'];
c2['new']=['y市','yy市'];
alert(c2.length);
alert(c2[2]);
alert(c2.new);
cityList = new Array();
cityList.push(cityList['河北省']);
cityList.push(cityList['河南省']);
cityList.push(cityList['湖北省']);
alert(cityList.length);//先把内容添加到cityList空数组中;下一步再给每个数组元素添加子数组,使数组变成二维数组
cityList[0] = ['邯郸市','石家庄'];
cityList[1] = ['郑州市','洛阳市'];
cityList[2] = ['湖北省','武汉市'];
var arr = new Array();
arr.push(1);
arr.push(2);
// 可以通过以下循环读取数据
for(var i = 0; i < arr.length; i++) {
alert(arr[i]);
}
var arr = new Array();
arr["a"] = "a";
arr["b"] = "aa";
// 通过以下循环方式读取
for(var key in arr) {
alert(arr[key]);
}