JavaScript
的数组是JavaScript
原生的唯一的复杂数据结构,这点有点类似于php
。(JSON
是一种轻量级数据交换格式)
类似于php
,JavaScript
的数组也是接受自定义下标,当不指定下标时,才使用默认下标。这就会有问题了,如下代码:
var a = [];
a['h'] = 2;
console.log(a.length);
你们猜猜这个数组大长度打印出多少?
0
我明明传入一个元素进入了数组a
中,为什么使用length
得到却是0
呢。如果用下面的一个例子,可能会更加直观的说明问题。
var a = [];
a[10] = 2;
console.log(a.length);
这次会打印的结果:
11
这说明了,在JavaScript中,数组的长度是根据循序下标的最大来计算的。所以,当我使用a[10] = 2;
时,这个数组的length
属性便通过这个最大的下标而得出。
这也就说明了为什么第一个例子中,我传入了一个自定义下标的元素,但是length
属性依旧是0
。
我的经验是,慎用自定义下标的JavaScript
数组。因为对一个数组来说,简单直白的定义,length
这个属性才不至于荒废。真正需要用到灵活的数据结构的时候,我推荐JSON+数组
的方式,相信可以基本解决问题了。
注意:对自定义下标的数组,使用
for
循环,循环举出的讲师下标,而不是对应的值