稀疏数组
//对于稀疏数组,一般并不含有从0开始的连续索引,一般的length这个属性值比实际的元素个数多
undefined
var arr1 = [undefined];
undefined
var arr2 = new Array(1);
undefined
0 in arr1
true
0 in arr2
false
1 in arr2
false
arr2
[empty]length: 1__proto__: Array(0)
var arr2 = new Array(3,2)
undefined
arr2
(2) [3, 2]
0 in arr2
true
//上面发现一个很奇怪的现象,其实你在用new创建数组的时候,如果你只输入一个数字,那么这个时候就会默认这个数字是你的数组长度,但是如果你输入了一大堆的东西就会认为是一个数组里面的元素
undefined
//当然上面不是我们关注的重点,重点是我们如果只创建的话其实没有任何默认的赋值,甚至是undefined都没有,而只是单纯的申请了一点点的空间,所以用in方法的时候显示false
undefined
var arr3 = [1,2,3];
undefined
arr3.length = 100
100
arr[99] = 1;
VM8114:1 Uncaught ReferenceError: arr is not defined
at <anonymous>:1:1
(anonymous) @ VM8114:1
arr3[99] = 1;
1
99 in arr3
true
98 in arr3
false
//上面给99赋值了所以有in,98没有
var arr =[,,]也是唏嘘数组,0 in arr 也返回false
var arr2=new Arra(1)xe长度为1的 数组,并没有赋值
二维数组的遍历
1.稀疏数组,下标不是从0开始,length>实际数组元素个数
2.可以直接给一个空数组,通过赋值的方式,指定某个下标值为多少,如果只是指定下标没有赋值,那么数组依然是空的,用in判断指定下标值 in
数组,返回是false,一旦赋值了,哪怕是undefined,null或是'',数组就不再是空的了,用指定下标值 in 数组,返回是true
3.二维数组,就是一维数组的元素是数组,所以通过一维数组下标只是找到了子数组,要想访问子数组的元素,还需要子数组的下标。所以要想访问二维数组元素,外层数组名[外层数组下标值][字数组下标值]
var arr2 =new Array(1);只是构造了一个长度为1 的数组,所以arr[0]里面是空的,因此0 in arr2就会返回false
//var arr =[,,] ,数组里面各个元素也是空的
PS: var arr1 =[undefined];虽然arr[0]=undefined,但是并不为空
稀疏数组并不含有从0开始的连续索引,一般length属性值比实际元素个数大
二维数组:arr.llength,row.length
稀疏数组:并不含有从0开始的连续的索引,一般length属性值比实际元素个数大。注意索引的存在
1.稀疏数组,下标不是从0开始,length>实际数组元素个数 2.可以直接给一个空数组,通过赋值的方式,指定某个下标值为多少,如果只是指定下标没有赋值,那么数组依然是空的,用in判断指定下标值 in 数组,返回是false,一旦赋值了,哪怕是undefined,null或是'',数组就不再是空的了,用指定下标值 in 数组,返回是true 3.二维数组,就是一维数组的元素是数组,所以通过一维数组下标只是找到了子数组,要想访问子数组的元素,还需要子数组的下标。所以要想访问二维数组元素,外层数组名[外层数组下标值][字数组下标值]
不含有从0开始得连续索引
稀疏数组 11
稀疏数组的存在
JS二维数据
二维数组遍历
稀疏数组里,只有当数组元素有确切的值的时候(undefined也好)
这个元素的索引
索引 in array
才会返回true
否则都是false
遍历稀疏数组时需要用in操作符
稀疏数组
遍历二维数组