你所不知道的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
开心一刻: