欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

奇葩的JS数组

程序员文章站 2022-06-04 14:41:36
...

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循环,循环举出的讲师下标,而不是对应的值