你所不知道的javascript数组特性

工作中,我们经常使用js的数组,但是,下面的东西你见过吗?

1,文本下标:

1 var  a=[];
2 a[-1]=1;  

你想过数组的下标为负数的情况吗?我们对数组的下标规定从0开始。但是上面那么写也还是可以的。不过,请看:

1 console.log(a.length); //0
2 console.log(a[-1]); // 1
3 console.log(a["-1"]);//1
4 a.hasOwnProperty(-1); //true

这个说明此处还是以对象的属性存储的。

2,二维数组:

1 var a = [];
2 a[0,0]=1;
3 a[0,1]=2;
4 a[1,0]=3;
5 a[1,1]=4;
6 
7 console.log(a.length); //2
8 console.log(a[0]); //3
9 console.log(a[1]); //4

js本身是不支持二维数组的,所以上面的length长度为2,它的内部实现是将二维数组小标当成逗号表达式,所以只有最有一个值有效。

如果你非要实现二维数组,那么也是可以的:

1 var  a = [1];
2 var  b=[];
3 b[0]=a;
4 console.log(b[0][0]); //1

3,对象下标:

当数组的下标为对象时,js会试图将它转化为数值,如果不行,则把它转化为字符串。

1 var   a = [];
2 var b ={c:1};
3 a[b]=2;
4 console.log(a[b]);//2

开心一刻:

posted on 2014-04-03 18:56  wenber  阅读(1060)  评论(2编辑  收藏  举报

导航