比如:alert(arr.length)的时候没有任何输出以及用for循环遍历的时候也是没有任何输出,这到底是为什么呢?
请看下面两个例子:
例子一:
var array1 = { "A":"a","B":"b","C":"c" };
for (key in array1) { // 能够正常输出数组
alert('=1=1=====' + key);
alert('=1=2=====' + array1[key]);
}
例子二:
var array2 = new Array();
array2["A"] = "a";
array2["B"] = "b";
array2["C"] = "c";
for (var i=0;i<array2.length;i++) { // 在输出正确数组前,会先输出许多函数信息
alert('==1=====' + i);
alert('==2=====' + array2[i]);
}
第一个例子的数组能够正常输出,例子二的遍历却没有任何输出,这到底是为什么呢?
解释:
第一个例子并不是数组
而是创建了一个对象
循环输出的是这个对象的属性和值
第二个例子是数组
但是你把他当成一个对象来使用了
你的array2["A"]="a";
其实就是array2.A="a";
因为在数组的方括号里面只能填数字
所以你的赋值只是给你的array2添加了3个属性
分别是
array2.A="a"
array2.B="b"
array2.C="c"
要想输出例子二的数组元素,可采用如下方法:
for (key in array2) { //in循环会输出这个对象的所有自定义属性
alert('==1=====' + key);
alert('==2=====' + array2[key]);
}
如有不明白的地方,可与我联系!