最近遇上的奇怪的数组下标,查阅资料了解了一下,原来是关联数组,后期有详细了解到关联数组的使用情况的话再和大家分享。
关联数组
“关联数组”是一种具有特殊索引方式的数组。不仅可以通过整数来索引它,还可以使用字符串或者其他类型的值(除了NULL)来索引它。
中文名
关联数组
释 义
一种具有特殊索引方式的数组
包 含
标量数据
元素特定顺序
无
关联数组和数组类似,由以名称作为键的字段和方法组成。
它包含标量数据,可用索引值来单独选择这些数据,和数组不同的是,关联数组的索引值不是非负的整数而是任意的标量。这些标量称为Keys,可以在以后用于检索数组中的数值。
关联数组的元素没有特定的顺序,你可以把它们想象为一组卡片。每张卡片上半部分是索引而下半部分是数值。
JavaScript的对象本质就是一个关联数组。
Perl语言中的关联数组用法:
%ARRAY=(key1,value1,key2,value2,key3,value3);
一个KEY 对应一个VALUE。
使用数组
数组下标
JScript 中的数组是稀疏的。也就是说,如果一个数组具有三个元素,编号分别为 0、1 和 2,您就可以创建元素 50,而不必担心从 3 到 49 的参数。如果该数组有一个自动的 length 变量,该 length 变量被设为 51,而不是 4。当然您可以创建各元素的编号之间没有间隙的数组,不过没有必要这样做。
在 JScript 中,对象和数组几乎相同。两个主要差别是对象没有自动长度属性,而数组没有对象的属性和方法。
数组寻址
使用方括号“[]”来寻址数组。方括号中是一个数值或一个值为整数的表达式。下面的示例假定在脚本的其他地方已定义了entryNum变量,且已赋值。
theListing = addressBook[entryNum];
theFirstLine = theListing[1];
将对象作为关联数组
通常,使用点运算符“.”访问对象的属性。例如,
myObject.aProperty
在这里,属性名称是一个标识符。也可以用索引运算符“[]”访问对象的属性。在这里,是把对象看作一个关联数组。关联数组是一种数据结构,它可以动态地将任意的数据的值与任意的字符串相关联。例如,
myObject["aProperty"] //
与上面相同。
尽管索引运算符更多地用于访问数组元素,当用于对象时,索引总是以字符串文字表示的属性名称。
注意访问对象属性的两种方法的重要差异。
运算符 | 属性名称作为 | 对属性名称的处理 |
点“.” | 标识符 | 不能作为数据处理 |
索引“[]” | 字符串文字 | 能被作为数据处理 |
在运行之前并不知道属性名称时,这个差异会有用(比如基于用户输入构造对象时)。要想从一个关联数组提取所有的属性,必须用 for … in 循环。