1、下面使用JavaScript数组下标,我们看示例吧。
为数组下标指定负值:
var a = []; // 定义空数组直接量
a[-1] = 1; // 为下标为-1的元素赋值
alert(a.length); // 返回值为0,说明数组长度没有增加
alert(a[-1]); // 返回1,说明这个元素还是存在的
alert(a["-1"]); // 返回1,说明这个值以对象属性的形式被存储
var a = [];
a[true] = 1;
a[false] = 0;
alert(a.length); // 返回值为0,说明数组长度没有增加
alert(a[true]); // 返回值为1
alert(a[false]); // 返回值为0
alert(a[0]); // 返回undefined
alert(a[1]); // 返回undefined
a["1"] = 1;
alert(a[1]); // 返回值为1
2、这种数据格式被称为哈希表(或称关联数组,伪数组),哈希表的数据检索速度要优于数组迭代检索。对于下面操作:
var a = [["张三",1],["李四",2],["王五",3]]; // 二维数组
for(var i in a){ // 遍历二维数组
if(a[i][0] == "李四") alert(a[i][1]) ; // 检索指定元素
}
var a = []; // 定义空数组
a["张三"] = 1; // 以文本下标来存储元素的值
a["李四"] = 2;
a["王五"] = 3;
alert(a["李四"] ); // 快速定位检索
3、JavaScript不支持二维数组,用户可以模仿二维数组的语法格式来定义数组。下面写法在语法上虽然不符合规定,但是JavaScript不会提示编译错误:
var a = [];
a[0,0] = 1;
a[0,1] = 2;
a[1,0] = 3;
a[1,1] = 4;
alert(a.length); // 返回2,说明仅有两个元素有效
alert(a[0]); // 返回3
alert(a[1]); // 返回3
var a = [], i = 1; // 初始化变量
while( i < 10 ){ // 指定循环次数
a[i *= 2 , i] = i; // 指定下标为2的幂数时才进行赋值
}
alert( a.length ); // 返回17
alert( a ); // 返回数组[,,2,, 4,,,, 8,,,,,,,, 16]
4、对象也可以作为数组下标,JavaScript会试图把对象转换为数值,如果不行,则把它转换为字符串,然后以文本下标的形式进行操作。
var a = []; // 数组直接量
var b = function(){ // 函数直接量
return 2;
}
a[b] = 1; // 把对象作为数组下标
alert( a.length ); // 返回长度为0
alert( a[b] ); // 返回1
var s =b.toString(); // 获取对象的字符串
alert( a[s] ); // 利用文本下标读取元素的值
a[b()] = 1; // 在下标处调用函数,则返回值为2
alert( a[2] ); // 所以可以使用2来读取该元素值