日期:2014-05-16  浏览次数:20389 次

请问js一维数组的键可以不可以是字符啊?为什么数组的length是0啊
var arr1=[];
arr1['width']=100;
arr1['height']=200;
alert(arr1['width'])
alert(arr1.length)  


------解决方案--------------------
都叫数组了,中括号内可称为下标
其他强类型语言中括号内的下标都是只允许为int的
js支持中括号内用字符串标识,这已经是极度的灵活姓了,你还想怎么样?

其实用字符串作下标的话js是给对象增加了一个成员而不是给数组添加了长度
自己试试
var arr1=[];
arr1['width']=100;
arr1['height']=200;
alert(arr1.width);//弹出100

所以arr1['width']=100等效于arr1.width=100;
换种写法就明白了吧?你觉得后面一种写法会增加数组长度么?
------解决方案--------------------
length实根据数组的最大下标+1得出来的 你的下标不是数字 所以不行啊 关联数组其实已经不是真真意义上的数组了 
可以用for(in)遍历然后递增来获得长度试试
var arr1=[];
arr1['width']=100;
arr1['height']=200;
var l=0;
for(var i in arr1){
l++;
}
alert(l)
类似于这样试试
------解决方案--------------------
arr1['width']

是个数组加的一个 width 属性

添加数组值 用
arr1.push(100);