奇葩的JS数组

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • 2017.93.09 规条日记 夏连英 4 1. 我应该总是实话实说。 2. 我“可以”总是实话实说。 3. 我可...
    xly1129阅读 133评论 0 0
  • 漓南城内。 小街热闹,人声鼎沸。风轻柔,云绵软。油纸伞随意摆在路边,与风转了一个圈,甚是迷人眼。孩童在嬉戏,游于这...
    司才林阅读 519评论 9 10
  • 从八月中旬开始,就一直小震不断,至少该有十次不止了吧。人们早就见怪不怪。有时见面就拿这个调侃几句,然后一笑而过,没...
    命自我立阅读 414评论 10 5